我在表中有以下数据
价格订单发货
价格订单发货入站
价格订单发货出站
在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%'
9条答案
按热度按时间7uzetpgm1#
用这样的东西-
或
kcrjzv8t2#
像这样。
在postgresql中。
ve7v8dk23#
请参阅以下与不区分大小写搜索-SQL server ignore case in a where expression类似的问题和答案
请尝试使用以下内容:
mo49yndu4#
您可能应该使用
SQL_Latin1_General_Cp1_CI_AS_KI_WI
作为您的排序规则。您在问题中指定的排序规则明确区分大小写。您可以看到排序规则here的列表。
smdnsysy5#
在几乎所有的SQL编译器中,like运算符都不区分大小写。如果您仍然没有得到区分大小写的结果,请使用iLike运算符。您还可以使用Upper()方法更改大小写来比较它。
或
pengsaosao6#
如果使用ORACLE的人可以在数据库级别本身进行更改
注:- Oracle
gab6jxml7#
这是我使用的解决方案。
这也将检查子字符串。总的来说,这是我从互联网上遇到的最好的解决方案。我使用相同的实现子字符串大小写不敏感搜索表的列。
nwo49xxi8#
备选和最佳解决方案:
你也可以使用一个特定的"排序规则",比如utf8〉utf8_unicode_ci,这样所有查询就不区分大小写了,但是数据在某些地方可以是大写的,所以只要确保没有可能有不同大小写的孪生查询(比如使用UNIQUE列来确保)。
查询示例:
https://prnt.sc/1vjwxd1
使用的表格设计和排序:https://prnt.sc/1vjx3h5.
"一个好的数据库设计可以为您节省大量的查询工作"-我:)
bqucvtff9#
LIKE和ILIKE允许在基于字符的列数据中进行模式匹配。它们的语法相同,但LIKE区分大小写,而ILIKE不区分大小写。我使用的是postgresql,它对我来说很好用。即
第一个月