一个查询,让我为sybase指定字母顺序

时间:2014-01-16 15:27:06

标签: sybase

我有一个名为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'

2 个答案:

答案 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)