select * from tablenmae where id in(1,2,3)

这样的语句和常用,但是如果in 后面的 1,2,3是变量怎么办呢,一般会用字符串连接的方式构造sql语句

string aa="1,2,3";

string sqltxt="select * from tablename where id in ("+aa+")";

然后执行 sqltxt

这样的风险是存在sql注入漏洞。那么如何在 in 的条件中使用变量呢?可以把形如“1,2,3”这样的字符串转换为一个临时表,这个表有一列,3行,每一行存一个项目(用逗号分隔开的一部分)

该函数可以这样写:

create Function StrToTable(@str varchar(1000))Returns @tableName Table(   str2table varchar(50))As--该函数用于把一个用逗号分隔的多个数据字符串变成一个表的一列,例如字符串'1,2,3,4,5' 将编程一个表,这个表Beginset @str = @str+','Declare @insertStr varchar(50) --截取后的第一个字符串Declare @newstr varchar(1000) --截取第一个字符串后剩余的字符串set @insertStr = left(@str,charindex(',',@str)-1)set @newstr = stuff(@str,1,charindex(',',@str),'')Insert @tableName Values(@insertStr)while(len(@newstr)>0)beginset @insertStr = left(@newstr,charindex(',',@newstr)-1)Insert @tableName Values(@insertStr)set @newstr = stuff(@newstr,1,charindex(',',@newstr),'')endReturnEnd

然后sql语句就可以这样了

declare str vchar(100)

set str='1,2,3'

select * from tablename where id in (select str2table from StrToTable(@str) )

转载于:https://www.cnblogs.com/amylis_chen/p/3272808.html

sql server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件...相关推荐

  1. 在SQL Server中将行有效地转换为列

    本文翻译自:Efficiently convert rows to columns in sql server I'm looking for an efficient way to convert ...

  2. sql server 中将datetime类型转换为date,或者time

    sql server 中将datetime类型转换为date,或者time 2008年01月14日 星期一 14:46 这个转换总是记不住,用到的时候就找,现贴上来,以备查用. datetime类型转 ...

  3. cte公用表表达式_在SQL Server中使用CTE进行插入和更新(公用表表达式)

    cte公用表表达式 In CTEs in SQL Server; Querying Common Table Expressions the first article of this series, ...

  4. ssma迁移助手_如何使用SQL Server迁移助手(SSMA)和SSIS将MySQL表迁移到SQL Server

    ssma迁移助手 介绍 (Introduction) In this article, we will demonstrate how to migrate MySQL tables to SQL S ...

  5. Java黑皮书课后题第6章:*6.23(指定字符的出现次数)使用下面的方法头编写一个方法,找到一个字符串中指定字符的出现次数。编写一个测试程序,提示用户输入一个字符串以及一个字符,显示该字符出现次数

    6.23(指定字符的出现次数)使用下面的方法头编写一个方法,找到一个字符串中指定字符的出现次数.编写一个测试程序,提示用户输入一个字符串以及一个字符,显示该字符出现次数 题目 题目描述 破题 代码 运 ...

  6. Java 把一个InputStream转换为一个BufferedReader

    Java 把一个InputStream转换为一个BufferedReader InputStream inputStream = getResources().getAssets().open(&qu ...

  7. C语言试题三十二之编写函数function,它的功能是:将一个字符串转换为一个整数(不得调用c语言提供的将字符串转换为整数的函数)。

    1. 题目 请编写函数function,它的功能是:将一个字符串转换为一个整数(不得调用c语言提供的将字符串转换为整数的函数). 2 .温馨提示 C试题汇总里可用于计算机二级C语言笔试.机试.研究生复 ...

  8. 输入5个学生的名字(英文),使用冒泡排序按从大到小排序。 提示:涉及到字符串数组,一个字符串是一个一维字符数组;一个 字符串数组就是一个二维字符数组。...

    输入5个学生的名字(英文),使用冒泡排序按从大到小排序. 提示:涉及到字符串数组,一个字符串是一个一维字符数组:一个 字符串数组就是一个二维字符数组. #include <stdio.h> ...

  9. char转化为cstring_C语言100题集合001-将一个数字字符串转换为一个整数

    系列文章<C语言经典100例>持续创作中,欢迎大家的关注和支持. 喜欢的同学记得点赞收藏哦- 1 题目 题目:将一个数字字符串转换为一个整数(不得调用C语言中提供的字符串函数进行操作) 例 ...

最新文章

  1. 学C++,80%都是为了搞竞赛、凑一门语言?网友:莫钓鱼
  2. kali2018安装教程_Kali Linux + Windows10双系统安装教程
  3. Workflow WF Reference Links for 2009-03-20
  4. MySQL 数据库添加数据时为什么会产生外码(外键)约束?原理就是什么?如何解决?
  5. 浏览器 JavaScript HTTP 库的大比拼:SugerAgent VS Axios
  6. iphone label初始化碰到的问题
  7. 【白皮书分享】抖音企业号-服装行业白皮书.pdf(附下载链接)
  8. 基于Vue.js的表格分页组件
  9. WebRTC源码架构浅析
  10. revit二次开发——过滤器基础
  11. 学习笔记(2):基于.NET/C#开发工控上位机编程基础-PLC电气工程师为什么要学习工控上位机
  12. Spring ldap ODM
  13. 我的网站防盗链和屏蔽蜘蛛的iis8.5 web.config功能
  14. 打开优盘显示要格式化怎么办?
  15. mysql使用结巴语句_结巴分词 java 高性能实现,是 huaban jieba 速度的 2倍
  16. 网络OSI(七层模型)
  17. 网页文字无法复制粘贴到word中怎么办
  18. Win10 禁用自动更新
  19. 摊上事儿的网易邮箱和安全圈的那些“防御机制”
  20. 各大银行ATM跨行取款收费一览表 程序员的切身利益 不得不看啊

热门文章

  1. 学习成长就到鸿蒙思维,庆国庆,迎中秋,鸿蒙教育享双节99元开启思维之旅!!...
  2. 对称加密和非对称加密
  3. 在7分钟内深刻理解咖喱
  4. javascript案例_如何在JavaScript中使用增强现实-一个案例研究
  5. node.js的开发流程_Node.js子流程:您需要了解的一切
  6. 1005 Spell It Right
  7. 零基础参加java培训哪家机构好
  8. Python 中常见的配置文件写法
  9. android上传图片崩溃,导致安卓手机死机的照片拍摄者表示这张照片是无意之举...
  10. 表白这件事,比解 bug 要难多少?