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