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

时间:2010-11-08 11:34:10

标签: sql mysql

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

13 个答案:

答案 0 :(得分:81)

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

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

答案 1 :(得分:39)

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

这会使区分大小写的搜索。


修改

kouton comment here tormutocomment here default collation所述,无论是否存在以下整理问题

COLLATE Latin1_General_CS_AS

应首先检查here的SQL服务器,它们各自的数据库和相关列;并使用查询表达式传递默认排序规则。可以找到归类列表{{3}}。

答案 2 :(得分:19)

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

答案 3 :(得分:9)

以小写

搜索所有行
SELECT *
FROM Test
WHERE col1 
LIKE '%[abcdefghijklmnopqrstuvwxyz]%'
collate Latin1_General_CS_AS

感谢Manesh Joseph

答案 4 :(得分:7)

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

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

添加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

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

EXEC sp_help DatabaseName

来源:SQL SERVER – Collate – Case Sensitive SQL Query Search

答案 5 :(得分:4)

这就是我为utf8编码的表和utf8_unicode_ci列所做的,它似乎没有完全发布:

SELECT *
FROM table
WHERE UPPER(column) != BINARY(column)

答案 6 :(得分:2)

mysql> SELECT '1234aaaa578' REGEXP '^[a-z]';

答案 7 :(得分:1)

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

的结果
SELECT * FROM MyTable WHERE BINARY(ColumnX) REGEXP '^[a-z]';

答案 8 :(得分:0)

我不是MySQL的专家我建议你看看REGEXP

SELECT * FROM MyTable WHERE ColumnX REGEXP '^[a-z]';

答案 9 :(得分:0)

在Posgresql中,您可以使用~

例如,您可以搜索col_a包含任何小写字母

的所有行

select * from your_table where col_a '[a-z]';

您可以根据需要修改Regex表达式。

此致

答案 10 :(得分:0)

- 对于Sql

SELECT *
FROM tablename
WHERE tablecolumnname LIKE '%[a-z]%';

答案 11 :(得分:0)

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

SELECT *
FROM YourTable
  where BINARY_CHECKSUM(lower(ColumnName)) = BINARY_CHECKSUM(ColumnName)

答案 12 :(得分:0)

从逻辑上讲,罗希特(Rohit)的解决方案应该有效,但事实并非如此。我认为SQL Management Studio在尝试优化时会搞砸。

但是通过在比较它们之前修改字符串,我可以得到正确的结果。这对我有用:

SELECT [ExternalId]
FROM [EquipmentSerialsMaster] where LOWER('0'+[ExternalId]) COLLATE Latin1_General_CS_AS != '0'+[ExternalId]