如何从tableA中选择*其中columnA值不以字母“F”开头

时间:2010-05-20 04:06:15

标签: sql

我是否可以使用SQL查询从tableAU中的列获取数据,其值不以“f”开头?

例如:

select * from  tableA where columnA

其中值不以字母“F”开头。

5 个答案:

答案 0 :(得分:8)

对于MSSQL场景,您应该能够将“NOT”运算符与LIKE运算符结合使用。所以你的SQL看起来大致像

select * from tableA where columnA NOT LIKE 'F%'

答案 1 :(得分:5)

@Evan:关于SQL Server不区分大小写的声明实际上并不完全正确。区分大小写取决于整理。服务器具有排序规则(在安装时选择),数据库具有排序规则(在创建数据库时选择),文本列具有排序规则(在创建列时选择)。如果在创建数据库时未指定排序规则,则服务器排序规则将是默认排序规则。如果在创建列时未指定排序规则,则它将获得与数据库相同的排序规则。

但在大多数情况下,人们(幸运的是)使用不区分大小写的排序规则安装服务器,例如Latin1_General_CI_AS。 CI =不区分大小写,AS =重音敏感。

在SQL Server上,如果我需要获得小f和大写F,我会选择:

where columnA NOT LIKE 'F%' and columnA NOT LIKE 'f%'
PS:我将此添加为“回答”,因为我没有看到任何评论现有答案的选项 - 我还是新来的......如果有人有解释我为什么不这样做选项,不要犹豫与我联系。

此致,华伦天奴。

答案 2 :(得分:3)

SELECT columnA
  FROM tableA
 WHERE SUBSTR(columnA,1,1) <> 'f'

如果你需要'f'和'F':

SELECT columnA
  FROM tableA
 WHERE SUBSTR(columnA,1,1) NOT IN ('f','F')

离开Lerxst's example,一些DBMS也会让你做这样有趣的事情:

SELECT columnA
  FROM tableA
 WHERE columnA NOT LIKE ALL ('f%','F%')

答案 3 :(得分:1)

我喜欢上面提到的所有想法,但我通常采用不同的方法。

SELECT *
FROM tableA
WHERE LEFT(columnA,1) <> 'F'

T-SQL确实提供了百万种皮肤猫的方法。

答案 4 :(得分:1)

搜索F和f似乎太过分了

SELECT *
FROM tableA
WHERE upper(substr(columnA,1,1)) != 'F'


或引用我的朋友Ritchie - 在sql中搜索时,修剪它然后强制它