sql server以大写形式查询值

时间:2013-11-20 18:45:26

标签: sql sql-server

我正在尝试查询具有大写值的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'

它有效。

你如何使用大写数据进行这项工作?

3 个答案:

答案 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')