[英]SQL- Ignore case while searching for a string
我在表中有以下數據
價格訂單發貨
價格訂單發貨入站
價格訂單發貨出站
在 SQL 中,我需要編寫一個查詢來搜索表中的字符串。 在搜索字符串時,它應該忽略大小寫。 對於下面提到的 SQL 查詢
SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME LIKE '%PriceOrder%'
給出上述所有數據,而
SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME LIKE '%Priceorder%'
不給。
例如。 當我搜索“PriceOrder”或“priceOrder”時,它會起作用,但“priceorder”或“Priceorder”不起作用。 我已經嘗試使用 COLLATE 進行以下查詢,但它不起作用。 請讓我知道我哪里出錯了。
SELECT DISTINCT COL_NAME FROM myTable WHERE
COL_NAME COLLATE latin1_general_cs LIKE '%Priceorder%'
使用這樣的東西 -
SELECT DISTINCT COL_NAME FROM myTable WHERE UPPER(COL_NAME) LIKE UPPER('%PriceOrder%')
要么
SELECT DISTINCT COL_NAME FROM myTable WHERE LOWER(COL_NAME) LIKE LOWER('%PriceOrder%')
看到這個類似的問題和答案,用不區分大小寫的搜索 - SQL服務器在where表達式中忽略大小寫
嘗試使用類似的東西:
SELECT DISTINCT COL_NAME
FROM myTable
WHERE COL_NAME COLLATE SQL_Latin1_General_CP1_CI_AS LIKE '%priceorder%'
您應該使用SQL_Latin1_General_Cp1_CI_AS_KI_WI
作為排序SQL_Latin1_General_Cp1_CI_AS_KI_WI
。 您在問題中指定的那個明顯區分大小寫。
您可以在此處查看排序規則列表。
像這樣。
SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME iLIKE '%Priceorder%'
在postgresql中。
如果有人使用 ORACLE 可以在數據庫級別本身進行更改
ALTER SESSION SET NLS_COMP=LINGUISTIC;
ALTER SESSION SET NLS_SORT=BINARY_CI;
注意:- 甲骨文
幾乎所有 SQL 編譯器中的 like 運算符都不區分大小寫。 如果您仍然沒有獲得區分大小寫的結果,請使用 iLike 運算符。 您也可以通過使用 Upper() 方法更改大小寫來比較它。
SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME iLIKE '%PriceOrder%'
或者
SELECT DISTINCT COL_NAME FROM myTable WHERE UPPER(COL_NAME) LIKE UPPER('%PriceOrder%')
SELECT DISTINCT COL_NAME FROM myTable WHERE LOWER(COL_NAME) LIKE LOWER('%PriceOrder%')
正如我在我的項目中所經歷的那樣,我喜歡區分大小寫搜索的結果和不區分大小寫的 LIKE 結果。 我不知道這是如何工作的,但我在我的項目中經歷了這一點。 使用休眠
用戶
當我使用
from Users userName LIKE 'jh%'
結果所有三個和什么時候
from Users userName like 'jh%'
結果只有 jhon 和 jhonny
替代和最佳解決方案:
您還可以使用特定的“排序規則”,例如 utf8 > utf8_unicode_ci。 那么所有查詢將不區分大小寫。 但數據在某些地方可能是大寫的。 因此,請確保沒有可能存在不同情況的孿生(例如使用 UNIQUE 列以確保)。
查詢示例:
https://prnt.sc/1vjwxd1
使用的表設計和整理: https : //prnt.sc/1vjx3h5 。
“一個好的數據庫設計可以為你節省大量的查詢工作” - 我 :)
這是我使用的解決方案。
SELECT * FROM TABLE WHERE COLUMN ~* '.*search_keyword_any_case.*'
這也將檢查子字符串。 總的來說,我從互聯網上遇到的最佳解決方案。 我使用相同的方法來實現對表列的子字符串不區分大小寫的搜索。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.