Oracle、達夢:數據庫大小寫不敏感,但是又要區分大小寫敏感(默認敏感)
一、
-
艸,這個需求就很操蛋。
-
實現
SELECT *
FROM T1
WHERE REGEXP_LIKE(field, '.*value.*', 'c');
在 Oracle 數據庫中使用 REGEXP_LIKE 函數時,'c' 參數用于指定比較應該是大小寫敏感的。默認情況下,正則表達式的匹配在 Oracle 中是大小寫敏感的,但這個參數可以用來明確這一行為,尤其是在數據庫的全局設置可能影響大小寫敏感性的環境中。
REGEXP_LIKE 函數的一般語法是:
其中 match_parameter 可以包括以下幾種:
'c':表示大小寫敏感(Case sensitive)。
'i':表示大小寫不敏感(Case insensitive)。
'n':允許模式匹配符號 "." 匹配換行符。
'm':將源字符串視為多行,其中 ^ 和 $ 分別匹配每行的開始和結束,而不是整個字符串的開始和結束。
如果沒有特別指定,REGEXP_LIKE 默認是大小寫敏感的,即默認包含 'c' 的行為。如果你的環境中正則表達式似乎不遵循這一默認行為,可能是由于數據庫的 NLS_SORT 或 NLS_COMP 參數設置導致的。在這種情況下,明確使用 'c' 參數可以幫助確保查詢的行為符合預期。
二、不區分大小寫查詢
SELECT *
FROM T1
WHERE LOWER(field) LIKE LOWER('%value%') ;
浙公網安備 33010602011771號