簡體   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