簡體   English   中英

SQL LIKE中的重復表達

[英]Repetition of expressions in SQL LIKE

有沒有辦法在 SQL LIKE 中表達重復。 我有以下查詢匹配 4 或 5 個數字,然后是連字符,然后是 8 個附加數字:

SELECT * FROM Table
WHERE Field LIKE '[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
   OR Field LIKE '[0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

在其他語言中,我會這樣寫: [0-9]{4-5}-[0-9]{8} 有沒有辦法簡化SQL中的上述表達式?

這看起來像 SQL 服務器。 您可以構造字符串:

select '[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]',
       replicate('[0-9]', 4) + '-' + replicate('[0-9]', 8)

但是,SQL 服務器沒有內置的正則表達式支持。

下面是等效的正則表達式,

Oracle

`REGEXP_LIKE(X, '^[[:digit:]]+$');`

PostgreSql

 `like '%[1-9]%' `

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM