在sql中为varchar类型的子句

时间:2013-11-26 12:27:37

标签: sql-server

我在sql中有一个字段campaign_code,它具有按时间顺序排列的值,其中'C'作为初始字母(例如,C143,C144,C145等)

我想获取多个campain_code的数据。例如。从C144到C146的所有数据。问题是sql没有为between子句获取varchar类型的值。请帮帮我。

5 个答案:

答案 0 :(得分:2)

以下不起作用(两者之间确实对字符串值起作用):??

SELECT * FROM campaign
WHERE campaign_code BETWEEN 'C144' and 'C146';

它应该将ansi排序视为比较数字并给出结果。关于这个话题有一些谷歌参考,也许是在http://www.w3schools.com/sql/trysql.asp?filename=trysql_select_between_text播放可能有助于展示可能性和局限性

答案 1 :(得分:0)

select * from your_table
where substring(compain_code, 2, 10) between 144 and 146

答案 2 :(得分:0)

我并不完全确定你的意思是“在”子句“之间没有”类型varchar的值“,因为MS说它确实here

您只需要确保所有表达式(test_,begin_和end_)属于同一类型,所以我猜你的test_expression不是varchar类型的?

答案 3 :(得分:0)

您可以将campaign_code转换为数字,然后使用between

select *
from table
where cast(replace(campaign_code, 'C','') as int) between 140 and 150

SQL Fiddle

答案 4 :(得分:0)

请尝试

  select * from tablename where id >(select id from tablename where campain_code='C144') and id<(select id from tablename where campain_code='C146')