嘿我关于SO的第一个问题!Anywho ...
在SQL上还是比较新的,所以我想我可能会遗漏一些东西.我的问题是我目前有一张满是电话号码的桌子.我想查询一下我搜索的电话号码与我的列表类似.例如,我想找到以"555123","555321"和"555987"开头的电话号码.我通常知道如果你有一个数字列表,你可以做一个查询,如
SELECT *
FROM phonenumbers
WHERE number in ('5551234567', '5559876543', .... );
Run Code Online (Sandbox Code Playgroud)
有没有办法像这样做?如
SELECT *
FROM phonenumbers
WHERE number in like ('555123%', '555321%', '555987%'); //I know this doesn't actually work
Run Code Online (Sandbox Code Playgroud)
而不是必须单独做这件事
SELECT *
FROM phonenumbers
WHERE number like '555123%'
or number like '555321%'
or number like '555987%'; //Which does work but takes a long time
Run Code Online (Sandbox Code Playgroud)
或者是否更容易做到这一点,我只是缺少?我正在使用postgres,我不知道是否有任何命令可以帮助解决这个问题.谢谢!
我尝试在sqlite数据库上使用带有python的正则表达式检查带有模式的字符串.当我尝试使用"使用patern使用"搜索字符串时,我有问题例如:
cur.execute("insert into articles(id,subject) values (1,'aaa\"test\"')")
cur.execute("select id,subject from articles where id = 1")
print (cur.fetchall())
cur.execute("select subject from articles where subject regexp '\"test\"' ")
print (cur.fetchall())
Run Code Online (Sandbox Code Playgroud)
我应该"在regexp之前其他方式编译器不喜欢...语法错误
[(1, 'aaa"test"')]
[] <????? should found
Run Code Online (Sandbox Code Playgroud)
有人知道怎么做吗?
我的正则表达式函数:con.create_function("regexp",2,regexp)