SQL SERVER 数据中有CHAR(10),CHAR(13),CHAR(9)隐藏字符导致查询失效
原文链接:https://blog.csdn.net/Giving_bestself/article/details/89515390
https://www.jdynew.com/help/index.php/zenme/16650.html
-
问题描述
SQL SERVER导入xlsx、csv等文件数据时, 数据中常常会有CHAR(10),CHAR(13),CHAR(9)(\t,\r,\n)等隐藏字符,导致查询匹配不上。
char(9) \t 水平制表符
char(10) \r 回车
char(13) \n 换行 - 不改数据情况下查询:
SELECT 字段 FROM 表名 WHERE REPLACE(REPLACE(REPLACE([字段],CHAR(9),''),CHAR(10),''),CHAR(13),'') = '查询条件'
-
-
使用SQL Server实现换行符,主要是使用CHAR()函数,CHAR()函数可以将一个字母或特殊符号转换成ASCII可识别的码,换行符在ASCII表中对应的码为 10 和 13,因此,我们可以使用CHAR(10 )或CHAR(13)来代表换行符:
例:SELECTCHAR(10 )as ‘row break’
结果:
row break
同时,CHAR()函数也可以指定多个参数,以表示不同的换行符:
例:SELECT CHAR(13,10 )as ‘row break by ctrl+enter’
结果:
row break by ctrl + enter
另外, 我们也可以使用 CONCAT() 函数来实现换行,不过,需要注意的是 CONCAT() 函数的参数必须是字符串类型,否则会报错:
例:SELECT CONCAT(‘hello’,CHAR(10),’world’) as ‘row break by CONCAT’
结果:
row break by CONCAT
总结:通过本文的介绍,我们可以看到,在SQL Server中使用CHAR()函数和CONCAT()函数,我们可以实现多行文本和换行符的输入,从而更方便地输入编程语句,有效提高工作效率。
-