166



我在表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%' 

不给。

例如。当我搜索 'PriceOrder' 或 'priceOrder' 时,它可以工作,但 'priceorder' 或 'Priceorder' 不起作用。我已经尝试使用 COLLATE 进行以下查询,但它不起作用。请让我知道我哪里出错了。

SELECT DISTINCT COL_NAME FROM myTable WHERE 
COL_NAME COLLATE latin1_general_cs LIKE '%Priceorder%'
4

9 回答 9

318

使用这样的东西 -

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%')
于 2013-04-18T12:23:41.710 回答
31

像这样。

SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME iLIKE '%Priceorder%'

在 PostgreSQL 中。

于 2018-06-08T05:02:46.380 回答
11

请参阅此类似的问题和不区分大小写搜索的答案 - 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%'
于 2013-04-18T12:12:40.830 回答
5

您可能应该将SQL_Latin1_General_Cp1_CI_AS_KI_WI其用作排序规则。您在问题中指定的内容明确区分大小写。

您可以在此处查看排序规则列表。

于 2013-04-18T12:10:35.717 回答
1

如果有人使用 ORACLE 可以在数据库级别本身进行更改

ALTER SESSION SET NLS_COMP=LINGUISTIC;  
ALTER SESSION SET NLS_SORT=BINARY_CI;  

注意:- 甲骨文

于 2021-05-19T08:30:45.080 回答
1

这是我使用的解决方案。

SELECT * FROM TABLE WHERE COLUMN ~* '.*search_keyword_any_case.*'

这还将检查子字符串。总的来说,我从互联网上遇到的最佳解决方案。我使用相同的方法来实现对表列的子字符串不区分大小写搜索。

于 2021-12-01T12:07:20.710 回答
0

在几乎所有 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%')
于 2021-05-18T05:32:31.617 回答
0

替代和最佳解决方案:
您还可以使用特定的“排序规则”,例如 utf8 > utf8_unicode_ci。然后所有查询将不区分大小写。但是在某些地方数据可能是大写的。因此,请确保没有可能存在不同情况的双胞胎(例如确保使用 UNIQUE 列)。

查询示例:
https
://prnt.sc/1vjwxd1 使用的表格设计和整理:https ://prnt.sc/1vjx3h5 。

“良好的数据库设计可以为您节省大量查询工作” - 我 :)

于 2021-10-10T09:03:45.773 回答
-1

正如我在我的项目中所经历的那样,我喜欢区分大小写搜索的结果和不区分大小写的 LIKE 结果。我不知道这是如何工作的,但我在我的项目中经历过。使用休眠

用户

  1. 约翰
  2. 强尼
  3. 杰哈姆斯

当我使用

from Users userName LIKE 'jh%'

结果全部三个以及何时

 from Users userName like 'jh%'

结果只有 jhon 和 jhonny

于 2021-07-02T06:21:23.043 回答