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

我正在查找一个SQL查询,它给了我ColumnX包含任何小写字母(例如“1234aaaa5789”)的所有行。 相同的大写。

SELECT * FROM my_table WHERE UPPER(some_field) != some_field 

这应该与有趣的人物,如åäöøüæï工作。 您可能需要为表格使用特定于语言的utf-8sorting规则。

 SELECT * FROM my_table WHERE my_column = 'my string' COLLATE Latin1_General_CS_AS 

这将做出区分大小写的search。


编辑

正如kouton 在这里的评论和tormuto 在这里的评论所说,无论谁在下面的整理中都面临着问题

 COLLATE Latin1_General_CS_AS 

应首先检查其SQL服务器,它们各自的数据库和有问题的列的默认sorting规则 ; 并使用查询expression式传递默认的sorting规则。 sorting列表可以在这里find。

 SELECT * FROM Yourtable WHERE UPPER([column_NAME]) COLLATE Latin1_General_CS_AS !=[Column_NAME] 

用于search小写的所有行

 SELECT * FROM Test WHERE col1 LIKE '%[abcdefghijklmnopqrstuvwxyz]%' collate Latin1_General_CS_AS 

谢谢Manesh Joseph

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

 SELECT Column1 FROM Table1 WHERE Column1 COLLATE Latin1_General_CS_AS = 'casesearch' 

添加COLLATE Latin1_General_CS_AS使search区分大小写。

SQL Server安装的默认sorting规则SQL_Latin1_General_CP1_CI_AS不区分大小写。

要更改任何表的任何列的sorting规则永久运行下面的查询。

 ALTER TABLE Table1 ALTER COLUMN Column1 VARCHAR(20) COLLATE Latin1_General_CS_AS 

要知道存储过程之后的任何表运行列的sorting规则。

 EXEC sp_help DatabaseName 

源代码: SQL SERVER – 整理 – 区分大小写的SQL查询search

 mysql> SELECT '1234aaaa578' REGEXP '^[az]'; 

我不是MySQL的专家我build议你看一下REGEXP

 SELECT * FROM MyTable WHERE ColumnX REGEXP '^[az]'; 

在Posgresql中,你可以使用~

例如,您可以search所有具有小写字母的col_a

select * from your_table where col_a '[az]';

你可以根据你的需要修改正则expression式。

问候,

– 对于Sql

 SELECT * FROM tablename WHERE tablecolumnname LIKE '%[az]%'; 

我必须将BINARY添加到ColumnX ,以获得区分大小写的结果

 SELECT * FROM MyTable WHERE BINARY(ColumnX) REGEXP '^[az]';