【问题标题】:Cast integer column to varchar and compare with string将整数列转换为 varchar 并与字符串进行比较
【发布时间】:2013-01-22 11:54:31
【问题描述】:

如何在 sql server 中比较整数列表和整数列。例如,我有一列statusidint。我想在1,4,8,9 中得到statusid 的结果。我将所有这些整数保存在字符串中,并使用下面的列 statusid 进行操作,但我在那里遇到了错误。此字符串可能是硬编码或参数。

where Cast(statusid as varchar) in ('1,4,8,9');

请提出解决方案。

【问题讨论】:

  • "我把所有这些整数都保存在字符串中" 你看到问题了吗?请改用带有外键的表。
  • 你的一串数字是从哪里来的?
  • @Westie : 它是一个参数
  • 查看this question

标签: sql sql-server


【解决方案1】:

由于数字被转换为字符串,IN 子句中的每个值都应该用单引号括起来

where Cast(statusid as varchar(20)) in ('1','4','8','9');

【讨论】:

  • 感谢您的回答。我正在获取字符串中的所有整数。怎么可以在这里...
  • 你能不能扩展一下,取字符串中的所有整数
  • 我想搜索整数值的集合,如 1、2、5 等。所以我把所有需要的数字(1,2,5..)保存在一个像'1,2,5'这样的字符串中,并想像where Cast(statusid as varchar) in ('1,2,5');
  • 不幸的是,您必须做一些额外的工作。您需要创建一个用户定义函数,将'1,2,5' 分解为多个片段,以便可以将每个值的值与您的整数列表进行比较。
【解决方案2】:
WHERE statusid 
IN (1, 4, 8, 9);

【讨论】:

  • 我认为这个解决方案可能取决于eraj从哪里得到他的数字列表——从eraj对我来说似乎是一个不完整的问题。
猜你喜欢
  • 1970-01-01
  • 2012-11-20
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 2013-06-09
  • 2016-01-16
相关资源
最近更新 更多