sql - 在 where 条件下声明 varchar
问题描述
我想将声明的变量传递到哪里。
例如我有一张桌子#test
:
ID Amount
1 100
2 50
3 20
4 40
5 150
我想做这样的事情:
declare @id varchar(11) = '(1, 4, 5)'
select * from #test where IDNumber in @id
我怎样才能做到这一点?
解决方案
如评论中所述,您最好使用另一种数据类型。
但是如果你真的想像你的例子那样做,你可以使用动态 sql:
DECLARE @ids VARCHAR(32) = '1,4,5';
DECLARE @result TABLE (ID INT, Amount INT);
DECLARE @sql NVARCHAR(MAX) =
N' SELECT ID, Amount
FROM #test
WHERE ID IN (' + @ids + ');';
PRINT @sql;
INSERT @result
EXEC(@sql);
SELECT*
FROM @result;
如果您需要在脚本中再次使用结果,则将结果放入表变量中,如果不需要,您可以只EXEC
使用 sql
推荐阅读
- groovy - 如何使用 groovy 从 DataSource 中删除重复项
- linux - Linux CLI 监视开关 -e,--errexit 意外退出,带有“非零状态的命令退出,按一个键退出”
- javascript - Wordpress AJAX 调用总是返回 0
- extjs - Extjs - 如果通过绑定计算,是否可以将 column.hidden 重置为初始状态?
- c# - Blazor/Blazorise.Bootstrap html 元素在使用组件的多个实例时进行交互
- csvhelper - CSV Helper 将字符串转换为日期时间
- python - Tkinter 在未聚焦时选择了 Entry() 和 Spinbox() 字段文本背景和前景
- laravel - 如何将此查询转换为 Eloquent 或查询生成器?
- elasticsearch - 带有过滤器的 Elasticsearch 聚合查询
- android - 如何从 Firestore 文档中获取对象数组