【问题标题】:how to select convert list varchar for WHERE IN() SQL Query如何为 WHERE IN() SQL 查询选择转换列表 varchar
【发布时间】:2015-08-24 08:54:34
【问题描述】:

如何选择转换列表 varchar 为 WHERE IN() SQL 查询

 select code from table1 
 Code
 10223
 10240
 10047
 10174
 10187
 10192
 10212
 10213
 10195


  select * table2 from where code in 
  ('10047','10174','10187','10192','10212','10213','10195')

为此我需要存储过程

【问题讨论】:

  • 你的意思是table1中的代码是数字的,而table2中的代码是一样的,但是是varchar类型的?
  • varchar only string @Mureinik
  • 您的评论“varchar only string”一点用都没有,请告诉我们每个表的代码字段有哪些类型。
  • 两者都是 Varchar @martinstoeckli
  • 所以不需要转换,Mureinik的解决方案应该可以工作。

标签: sql select stored-procedures


【解决方案1】:

in 运算符可以对查询进行操作,因此不需要进行这样的转换:

SELECT *
FROM   table2
WHERE  code IN (SELECT code FROM table1)

【讨论】:

    【解决方案2】:

    你有两种选择:

    使用连接:

    假设table1 中的Code 列是唯一的:

    SELECT t2.* FROM table2 t2 INNER JOIN table1 t1 ON CAST(t1.code AS VARCHAR)=CAST(t2.code AS VARCHAR)
    

    内部查询

    SELECT * FROM  table2 WHERE code IN 
    (SELECT code FROM table1)
    

    【讨论】:

    • 这两个语句不一定返回相同的东西。
    • @a_horse_with_no_name,你是对的,我已经编辑了答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    相关资源
    最近更新 更多