我有一个使用LOWER(FIELD_NAME)
的简单SQL Server 2008更新查询,该查询只应更新FIELD_NAME
包含大写字符的位置。
UPDATE TABLE
SET FIELD_NAME = LOWER(FIELD_NAME)
WHERE FIELD_NAME *contains uppercase characters*
如何在where子句中仅选择带有大写字符的列?
答案 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