Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server sql中varchar类型的between子句_Sql Server - Fatal编程技术网

Sql server sql中varchar类型的between子句

Sql server sql中varchar类型的between子句,sql-server,Sql Server,我有一个sql中的field campaign_代码,它的值按时间顺序排列,以“C”作为初始字母,例如C143、C144、C145等 我想获取多个campain_代码的数据。从C144到C146的所有数据。问题是sql没有为BETHEN子句接受varchar类型的值。请帮帮我。以下内容是否不适用于字符串值: SELECT * FROM campaign WHERE campaign_code BETWEEN 'C144' and 'C146'; 它应该将ansi排序视为比较数字,并给出结果。在

我有一个sql中的field campaign_代码,它的值按时间顺序排列,以“C”作为初始字母,例如C143、C144、C145等


我想获取多个campain_代码的数据。从C144到C146的所有数据。问题是sql没有为BETHEN子句接受varchar类型的值。请帮帮我。

以下内容是否不适用于字符串值:

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

它应该将ansi排序视为比较数字,并给出结果。在这个主题上有一些谷歌参考文献,也许是在:上的一个剧本,可能有助于展示可能性和局限性

我不太确定你的意思是什么,不把varchar类型的值作为between子句,因为MS说它是这样的

select * from your_table
where substring(compain_code, 2, 10) between 144 and 146
您只需确保所有表达式test_u、begin_u和end_u的类型相同,因此我猜您的test_u表达式不是varchar类型?

您可以将活动代码转换为数字,然后使用:

请试一试

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

问题是sql没有为BEVERY子句获取varchar类型的值-这不是真的。这个问题似乎离题了,因为您描述为not working的方法确实有效,并且是解决这个问题的方法……感谢大家回答我的问题,并特别感谢grisha。你解决了我的问题
  select * from tablename where id >(select id from tablename where campain_code='C144') and id<(select id from tablename where campain_code='C146')