返回第一个字符为非alpha的行

时间:2012-06-25 20:05:54

标签: sql sqlite sql-like alphanumeric

我正在尝试检索所有以SQlite中的任何非字母字符开头的列,但似乎无法使其正常工作。我目前有这个代码,但它返回每一行:

SELECT * FROM TestTable WHERE TestNames NOT LIKE '[A-z]%'

有没有办法检索TestNames的第一个字符不属于字母表的所有行?

3 个答案:

答案 0 :(得分:7)

你是第一个角色吗?

select * from TestTable WHERE substr(TestNames,1) NOT LIKE '%[^a-zA-Z]%'

substr函数(在某些SQL语言中也可以称为left())将帮助隔离字符串中的第一个字符。

编辑: 也许sqllite中的substr(TestNames,1,1),我没有准备好的实例来测试那里的语法。

添加了:

select * from TestTable WHERE Upper(substr(TestNames,1,1)) NOT in ('A','B','C','D','E',....)

似乎不是最佳的,但在功能上会起作用。不确定在SQLlite中使用哪些char命令来执行一系列字母。

我使用'upper'来制作它,所以你不需要在not in语句中做小写字母...有点希望SQLlite知道那是什么。

答案 1 :(得分:0)

尝试

SELECT * FROM TestTable WHERE TestNames NOT LIKE '[^a-zA-Z]%'

答案 2 :(得分:0)

SELECT * FROM NC_CRIT_ATTACH WHERE substring(FILENAME,1,1)NOT LIKE'[A-z]%'; 应该快一点吧 A)首先从第一列获取所有数据,然后扫描它。 B)除非您为此列编制索引,否则仍然是全表扫描。