我正在尝试检索所有以SQlite中的任何非字母字符开头的列,但似乎无法使其正常工作。我目前有这个代码,但它返回每一行:
SELECT * FROM TestTable WHERE TestNames NOT LIKE '[A-z]%'
有没有办法检索TestNames的第一个字符不属于字母表的所有行?
答案 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)除非您为此列编制索引,否则仍然是全表扫描。