[英]Regular expressions in SQL
我很好奇你是否以及如何使用正则表达式在SQL语句中查找空格。
我有一个字符串,在实际字符串后可以有无限量的空格。
例如:
"STRING "
"STRING "
会匹配,但是
"STRING A"
"STRINGB"
不会。
现在我有:
like 'STRING%'
这并不能完全恢复我想要的结果。
我正在使用Sql Server 2008。
一个简单的类似可以在末尾找到任何带空格的字符串:
where col1 like '% '
要同时允许制表符,回车符或换行符:
where col1 like '%[ ' + char(9) + char(10) + char(13) + ']'
根据你的评论,找到“字符串”后跟任意数量的空格:
where rtrim(col1) = 'string'
你可以试试
where len(col1) <> len(rtrim(col1))
Andomar的答案会找到适合你的字符串,但我的蜘蛛侠感觉告诉我问题的范围可能比简单地找到空白更大。
如果,正如我怀疑的那样,你找到了空白,以便你可以清理它,这很简单
UPDATE Table1
SET col1 = RTRIM(col1)
将从列中删除任何尾随空格。
或RTRIM(LTRIM(col1))删除前导和尾随空格。
或者REPLACE(col1,''。'')删除字符串中包含空格的所有空格。
请注意,RTRIM和LTRIM仅适用于空格,因此要删除制表符/ CR / LF,您必须使用REPLACE。 仅从字符串的前导/尾部删除那些是可行的,但不是很简单。 您的数据库供应商错误地实现了ANSI SQL 99标准TRIM功能,这将使这更容易。
where len(col1 + 'x') <> len(rtrim(col1)) + 1
BOL为带有尾随空格的LEN()提供了变通方法: http : //msdn.microsoft.com/en-us/library/ms190329.aspx
LEN(列+'_') - 1
或使用DATALENGTH
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.