我在表中有以下数据
PriceOrderShipped
PriceOrderShippedInbound
PriceOrderShippedOutbound
在SQL中,我需要编写一个查询表中的字符串。在搜索字符串时,它应该忽略大小写。对于下面提到的SQL查询
SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME LIKE '%PriceOrder%'
给出了所有上述数据,而
SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME LIKE '%Priceorder%'
不给。
EG。当我搜索'PriceOrder'或'priceOrder'时它可以工作,但'priceorder'或'Priceorder'不起作用。 我已尝试使用COLLATE进行以下查询,但它不起作用。请告诉我哪里出错了。
SELECT DISTINCT COL_NAME FROM myTable WHERE
COL_NAME COLLATE latin1_general_cs LIKE '%Priceorder%'
答案 0 :(得分:190)
使用类似的东西 -
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%')
答案 1 :(得分:9)
查看类似的问题和答案,以不区分大小写的方式进行搜索 - SQL server ignore case in a where expression
尝试使用以下内容:
SELECT DISTINCT COL_NAME
FROM myTable
WHERE COL_NAME COLLATE SQL_Latin1_General_CP1_CI_AS LIKE '%priceorder%'
答案 2 :(得分:4)
您应该使用SQL_Latin1_General_Cp1_CI_AS_KI_WI
作为整理。您在问题中指定的那个明显区分大小写。
您可以看到归类列表here。
答案 3 :(得分:4)
喜欢这个。
SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME iLIKE '%Priceorder%'
在postgresql中。
答案 4 :(得分:0)
like 运算符在几乎所有 SQL 编译器中都不区分大小写。如果您仍然没有得到区分大小写的结果,请使用 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%')
答案 5 :(得分:0)
如果有人使用 ORACLE 可以在数据库级别本身进行更改
ALTER SESSION SET NLS_COMP=LINGUISTIC;
ALTER SESSION SET NLS_SORT=BINARY_CI;
注意:- 甲骨文
答案 6 :(得分:0)
正如我在我的项目中所经历的那样,我喜欢区分大小写搜索的结果和不区分大小写的 LIKE 结果。我不知道这是如何工作的,但我在我的项目中经历了这一点。使用休眠
用户
当我使用
from Users userName LIKE 'jh%'
三个结果 当
from Users userName like 'jh%'
结果只有 jhon 和 jhonny