我正在尝试查询具有大写值的sql server表,并且它不会返回任何内容。 例如,
表格结构,
ID Fruit
-- ------
1 APPLE ONE
2 ORANGE TWO
3 PEAR THREE
Select * from Fruits where fruit = 'APPLE ONE'
不归还任何东西。但是,如果我将其改为" apple one"在数据库中并将查询更改为
Select * from Fruits where fruit = 'apple one'
它有效。
你如何使用大写数据进行这项工作?
答案 0 :(得分:4)
确保将列设置为正确的排序规则。或者,您可以直接在查询中指定排序规则。
CI的归类是不区分大小写的。这将返回您的“苹果一号”记录:
select 'CI', * from table1
where myfield = 'apple one' collate SQL_Latin1_General_CP1_CI_AS
这不会返回您的'apple one'记录,因为它是CS(区分大小写):
select 'CS', * from table1
where myfield = 'apple one' collate SQL_Latin1_General_CP1_CS_AS
如果您的所有查询对此列使用相同的排序规则,则最好在列上设置它。如果所有查询在所有列上使用相同的排序规则,则最好将其设置为数据库本身作为默认值。
EG。为列设置它:
CREATE TABLE Table1
([myfield] varchar(10) collate SQL_Latin1_General_CP1_CI_AS)
;
答案 1 :(得分:1)
您可以使用UPPER或LOWER功能。像这样:
Select * from Fruits where UPPER(fruit) = 'APPLE ONE'
也喜欢操作。将忽略大小写:
Select * from Fruits where fruit like 'APPLE ONE'
答案 2 :(得分:-1)
在这些情况下,最好的方法是将EQUAL运算符的两边转换为UPPER或LOWER
Select * from Fruits where UPPER(fruit) = UPPER('apple one')
或
Select * from Fruits where LOWER(fruit) = LOWER(apple one')