繁体   English   中英

SQL中的正则表达式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM