如何查找具有包含小写字母的值的行

rip*_*234 64 mysql sql

我正在寻找一个SQL查询,它给我所有行,其中ColumnX包含任何小写字母(例如"1234aaaa5789").大写相同.

geo*_*eon 87

SELECT * FROM my_table 
WHERE UPPER(some_field) != some_field
Run Code Online (Sandbox Code Playgroud)

这应该适用于像åäöøüæï这样有趣的角色.您可能需要为表使用特定于语言的utf-8排序规则.

  • 它不适用于不区分大小写的DB,必须从Devraj Gadhavi回答COLLATE Latin1_General_CS_AS (24认同)

Dev*_*avi 43

SELECT * FROM my_table WHERE my_column = 'my string'
COLLATE Latin1_General_CS_AS
Run Code Online (Sandbox Code Playgroud)

这将使区分大小写的搜索.


编辑

正如指出kouton在这里评论tormuto评论在这里凡面临着以下问题整理

COLLATE Latin1_General_CS_AS
Run Code Online (Sandbox Code Playgroud)

应首先检查其SQL服务器,其各自的数据库和相关列的默认排序规则 ; 并使用查询表达式传递默认排序规则.排序列表可以在这里找到.


小智 23

SELECT * FROM Yourtable 
WHERE UPPER([column_NAME]) COLLATE Latin1_General_CS_AS !=[Column_NAME]
Run Code Online (Sandbox Code Playgroud)


小智 11

用于搜索小写的所有行

SELECT *
FROM Test
WHERE col1 
LIKE '%[abcdefghijklmnopqrstuvwxyz]%'
collate Latin1_General_CS_AS
Run Code Online (Sandbox Code Playgroud)

谢谢Manesh Joseph


小智 8

在MS SQL服务器中使用COLLATE子句.

SELECT Column1
FROM Table1
WHERE Column1 COLLATE Latin1_General_CS_AS = 'casesearch'
Run Code Online (Sandbox Code Playgroud)

添加COLLATE Latin1_General_CS_AS使搜索区分大小写.

SQL Server安装的默认排序规则SQL_Latin1_General_CP1_CI_AS不区分大小写.

要更改任何表的任何列的排序规则,请在查询后永久运行.

ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(20)
COLLATE Latin1_General_CS_AS
Run Code Online (Sandbox Code Playgroud)

要知道在存储过程之后运行的任何表的列的排序规则.

EXEC sp_help DatabaseName
Run Code Online (Sandbox Code Playgroud)

来源:SQL SERVER - 整理 - 区分大小写的SQL查询


mar*_*n87 8

这是我对utf8编码的表和utf8_unicode_ci列执行的操作,这似乎并没有完全发布:

SELECT *
FROM table
WHERE UPPER(column) != BINARY(column)
Run Code Online (Sandbox Code Playgroud)

  • 这是完美的答案。无需打整理的东西 (2认同)
  • 不适用于 SQL Server。尝试使用不等于<> (2认同)

Mah*_*hib 7

我做了类似的事情来找出小写字母。

SELECT *
FROM YourTable
  where BINARY_CHECKSUM(lower(ColumnName)) = BINARY_CHECKSUM(ColumnName)
Run Code Online (Sandbox Code Playgroud)