我很好奇你是否以及如何使用正则表达式在SQL语句中查找空格。
我有一个字符串,在实际字符串后可以有无限量的空格。
例如:
"STRING "
"STRING "
会匹配,但
"STRING A"
"STRINGB"
不会。
现在我有:
like 'STRING%'
并不能完全归还我想要的结果。
我正在使用Sql Server 2008。
答案 0 :(得分:4)
一个简单的例子可以在最后找到任何带空格的字符串:
where col1 like '% '
还允许制表符,回车符或换行符:
where col1 like '%[ ' + char(9) + char(10) + char(13) + ']'
根据你的评论,找到“string”后跟任意数量的空格:
where rtrim(col1) = 'string'
答案 1 :(得分:0)
你可以尝试
where len(col1) <> len(rtrim(col1))
答案 2 :(得分:0)
Andomar的回答会找到适合你的字符串,但我的蜘蛛侠意识告诉我,问题的范围可能大于找到空白。
如果我怀疑你正在寻找空白以便你可以清理它,那就简单了
UPDATE Table1
SET col1 = RTRIM(col1)
将从列中删除任何尾随空格。
或RTRIM(LTRIM(col1))删除前导空格和尾随空格。
或者REPLACE(col1,''。'')删除所有空格,包括字符串中的空格。
请注意,RTRIM和LTRIM仅适用于空格,因此要删除制表符/ CR / LF,您必须使用REPLACE。仅从字符串的前导/尾部删除那些是可行的,但不是很简单。您的数据库供应商错误地实现了ANSI SQL 99标准TRIM函数,这将使这更容易。
答案 3 :(得分:0)
where len(col1 + 'x') <> len(rtrim(col1)) + 1
答案 4 :(得分:0)
BOL为带有尾随空格的LEN()提供了变通方法:http://msdn.microsoft.com/en-us/library/ms190329.aspx
LEN(列+'_') - 1
或使用DATALENGTH