我有一个名为telephone_contacts的表,其中包含两列:
telephone_contacts(
名称varchar(100)
数字编号(20)
)
列名包含大约20,000行。
我想按字母过滤名称,例如:
我想要一个只能获得前6个字母(A,B,C,D,E,F G)的查询
然后,查询得到最后6个字母(U,V,W,X,Y,Z)
示例:列名包含以下数据: 安倍,汽车,夜,范围,鸡,动物园,whatsapp,脸谱,viber阿杜,阿拉姆,自行车,雄性,狗,蛋 我想要一个只能得到我的查询(A,B,C,D,E,F G),结果将是 abe,care,chicken facebook,adu,aramt,bike,dog,egg 其余的被忽略
在oracle中,我可以这样做,我如何为sybase做到这一点?
SELECT * FROM user_tab_cols WHERE SUBSTR(UPPER(table_name),1)BETWEEN'A'和'Q'左右 SELECT * FROM user_tab_cols WHERE SUBSTR(UPPER(table_name),1)BETWEEN'P'和'Z'
答案 0 :(得分:1)
它更简单:
select * from yourtable where upper(name) like "[A-Q]%"
select * from yourtable where upper(name) like "[P-Z]%"
答案 1 :(得分:1)
在Sybase中,您可以使用正则表达式(正则表达式)来指定字符范围[A-G]假设您的服务器设置为不区分大小写,您可以执行以下操作:
SELECT * FROM telephone_contacts WHERE name LIKE "[A-G]%"
SELECT * FROM telephone_contacts WHERE name LIKE "[U-Z]%"
或
SELECT * FROM telephone_contacts WHERE name BETWEEN "A%" and "G%"
SELECT * FROM telephone_contacts WHERE name BETWEEN "U%" and "Z%"
如果您发现您的服务器区分大小写,那么您可以执行其他答案中建议的操作,并使用upper(name)