我在sql中有一个字段campaign_code,它具有按时间顺序排列的值,其中'C'作为初始字母(例如,C143,C144,C145等)。
我想获取多个campain_code的数据。例如。从C144到C146的所有数据。问题是sql没有为between
子句获取varchar类型的值。请帮帮我。
答案 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
答案 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')