SQL选择包含大写字符的字段

时间:2015-06-17 02:16:29

标签: sql sql-server sql-server-2008

我有一个使用LOWER(FIELD_NAME)的简单SQL Server 2008更新查询,该查询只应更新FIELD_NAME包含大写字符的位置。

UPDATE TABLE
SET FIELD_NAME = LOWER(FIELD_NAME)
WHERE FIELD_NAME *contains uppercase characters*

如何在where子句中仅选择带有大写字符的列?

4 个答案:

答案 0 :(得分:3)

您可以使用区分大小写的排序规则:

UPDATE TABLE
SET FIELD_NAME = LOWER(FIELD_NAME)
WHERE FIELD_NAME LIKE '%[ABCDEFGHIJKLMNOPQRSTUVWXZ]%' COLLATE SQL_LATIN1_GENERAL_CP1_CS_AS

答案 1 :(得分:0)

尝试以下方法:

UPDATE TABLE
SET FIELD_NAME = LOWER(FIELD_NAME)
WHERE FIELD_NAME LIKE '%[A-Z]%' Collate SQL_Latin1_General_CP1_CS_AS

如果您还有其他字符,例如数字,那么您也可以按如下方式进行查询:

UPDATE TABLE
SET FIELD_NAME = LOWER(FIELD_NAME)
WHERE FIELD_NAME = UPPER(FIELD_NAME) Collate SQL_Latin1_General_CP1_CS_AS

答案 2 :(得分:0)

declare @table table (val varchar(10))
insert into @table(val) values ('MOHAN'),('rohan')

update @table set val = LOWER(val) where val = UPPER(val) OR VAL LIKE '%[A-Z]%'COLLATE Latin1_General_CS_AS

select * from @table

答案 3 :(得分:0)

另一种方法:

UPDATE TABLE
SET FIELD_NAME=LOWER(FIELD_NAME)
WHERE FIELD_NAME!=LOWER(FIELD_NAME) COLLATE Latin1_General_CS_AI

Reference