sqlserver 参数化查询 允许为null_1+Null 居然等于 Null
MySql :Concat(str1,str2,str3,.....)
Oracle:Concat(),||
Sql:+ (like '%'+#{fileTitle,jdbcType=NVARCHAR}+'%')
Oracle的CONCAT()只允许两个参数;
换言之,一次只能将两个字串串连起来。不过,在Oracle中,我们可以用'||'来一次串连多个字串。
在SQL语句中经常需要进行字符串拼接,以sqlserver,oracle,mysql三种数据库为例,因为这三种数据库具有代表性。
sqlserver:
select '123'+'456';
oracle:
select '123'||'456' from dual;或select concat('123','456') from dual;
mysql:
select concat('123','456');
注意:SQL Server 2012已新增concat函数,oracle和mysql中虽然都有concat,但是oracle中只能拼接2个字符串,所以建议用||的方式;mysql中的concat则可以拼接多个字符串。
在SQL Server中的“+”号除了能够进行字符串拼接外,还可以进行数字运算,在进行字符串拼接时要小心使用。下面以“Users”表为例,进行详细分析:
2. 数字 + 字符串
2.1 int + varchar
SELECT id + place FROM Users WHERE id = 1; //提示错误“在将 varchar 值 'bzz' 转换成数据类型 int 时失败”SELECT id + place FROM Users WHERE id = 5; //提示错误“在将 varchar 值 '102.34' 转换成数据类型 int 时失败”
SELECT id + place FROM Users WHERE id = 4; //返回int “105”
2.2 decimal + varchar
SELECT *, id + cost FROM Users WHERE id = 4 OR id = 5; //返回decimal “102.98”和“104.30”
SELECT *, place + cost FROM Users WHERE id = 1; //提示错误“从数据类型 varchar 转换为 numeric 时出错。”
由此可见,系统会将字符串varchar类型转化为int,若不能转换则提示错误,转换成功则进行数字计算。
3. 数字 + 数字
数字指的是int、decimal等类型。数字 + 数字,则进行数字相加,若某字段为NULL,则计算结果为NULL。
SELECT *, uage + cost AS 'uage + cost' FROM Users
4.字符串 + 字符串
字符串 + 字符串,则直接进行拼接。若某字段为NULL,则计算结果为NULL。
SELECT *, uname + place AS 'uname + place' FROM Users
5. 使用CAST和CONVERT函数进行类型转换
通过上述实例,可以看出若要使用“+”进行字符串拼接或数字计算,最稳妥的方法是进行类型转换。
CAST()函数可以将某种数据类型的表达式转化为另一种数据类型
CONVERT()函数也可以将制定的数据类型转换为另一种数据类型
要求:将“678”转化为数值型数据,并与123相加进行数学运算。
SELECT CAST('678' AS INT) + 123;SELECT CONVERT(INT, '678') + 123;
要求:id列和place列进行字符串拼接。
SELECT *, CONVERT(varchar(10), id) + place FROM Users;
字符串拼接后的字符串不能简单作为“筛选字段”
有时,需要列A = 变量1,列B = 变量2的筛选,为了简化SQL语句 列A + 列B = 变量1 + 变量2。这种方法并不完全准确
SELECT * FROM Users WHERE uname + place = 'aabzz';
SELECT * FROM Users WHERE uname = 'aa' AND place = 'bzz';
为了防止上述情况的发生,可以在列A和列B之间加上一个较特殊的字符串。
SELECT * FROM Users WHERE uname + 'rain@&%$man' + place = 'aa' + 'rain@&%$man' + 'bzz'
原文链接:https://www.cnblogs.com/rainman/p/6203065.html#m0
sqlserver 参数化查询 允许为null_1+Null 居然等于 Null相关推荐
- mysql不等于null和等于null的写法
1.表结构 2.表数据 3.查询teacher_name字段不能等于空并且也不能等于空字符 SELECT * FROM sys_teacher WHERE teacher_name IS NOT N ...
- sqlserver 参数化查询 允许为null_关于SQL Server的insert执行的秘密(上)一个最简单的insert分析...
准备工作: 我需要一张User表,这张表有几个字段,还有一个自增长的数字id,表结构如下: 这是一张比现实应用中简单的多的用户表,UserID是自增长字段. 开始执行一个最简单的INSERT: INS ...
- 输出stage.displayState等于null原因
写了一个类,其对象作为child加载到舞台, 这个类里面写了一个全屏函数 输出stage.displayState居然等于null 我trace root.stage.displayState 依然 ...
- 参数化查询 但未提供该参数(将null插入数据库)
当你是使用参数化查询时为参数赋值时,比如command.Parameters.Add("@a",SqlDbType.Text,30).Value=a;当a=null是将报错: 错参 ...
- SqlServer:带IN()子句C#的参数化查询
目录 介绍 IN()子句帮助类 SQL查询构建 具有实体框架的参数化查询 使用SqlCommand进行参数化查询 数据 数据库,表和数据行 Db连接字符串 其他数据库 一个实用程序类,使用参数化查询在 ...
- dapper mysql 多参数查询_使用Dapper进行参数化查询
在使用Dapper操作Mysql数据库中我介绍了使用dapper进行CURD基本操作,但在示例代码中参数虽然也是通过@开头,但其实不是真正意义的参数化查询,而是拼接sql,这种方式不利于防止sql注入 ...
- SQLserver模糊查询
SQLserver模糊查询 考试的后台监控中,查询考生的登录情况,模糊查询考生信息. 对于根据查询出来的该考试.考场或者班级的所有考生信息,从中进行模糊查询,可以模糊匹配学号.姓名.状态.学院或者专业 ...
- SQLServer子查询相关知识笔记
今天给大家介绍以下SQLServer子查询相关知识,希望对大家能有所帮助! 1.子查询概念介绍 子查询可以嵌套在SELECT.INSERT.UPDATE.DELETE语句或其他子查询语句中的查询,子查 ...
- pdo 参数化查询 mysql函数_PDO笔记之参数化查询
参数化查询解释在这里:Wiki参数化查询 (少有的Wiki中文比英文介绍的要详细的编程条目) PDO中参数化查询主要用到prepare()方法,然后这个方法会返回一个PDOStatement对象,也就 ...
最新文章
- 【前沿视点】Web Lab——鼓舞人心的谷歌 Chrome 实验室
- tab 触发ajax请求,防止重复发送ajax请求的思索
- Oracle 中定位重要(消耗资源多)的SQL
- Java中方法的继承以及父类未被子类覆盖的方法调用的问题
- 一句话了解 v-show 和 v-if 的区别
- bind_param 类怎么写_情感类自媒体怎么写?你不知道的情感类文章4大禁忌!
- IDEA切换全屏模式
- Dropout与过拟合抑制
- C++使用major做变量名的问题
- 矩阵理论(三)向量矩阵的求导
- Windows 下 cmd 窗口使用 ssh 命令
- 单片机74LS138扩展中断
- android 系统安装教程视频,PC也能用安卓 X86系统装安卓视频教程
- 互联网日报 | 6月3日 星期四 | 华为正式发布HarmonyOS 2;联想会员数突破1.4亿;今年全国高考报名人数1078万...
- 北京 | 微信小程序及小游戏开发者线下交流会
- Scratch 游戏项目学习法 —— 接苹果(五)把苹果放在顶端
- SPSS Modeler 建模前准备—数据平衡与特征选择(指南 第十一章)
- 04 Qt音视频多媒体播放器开发,Qt6.2.3 multimedia
- 什么是期权,50ETF期权投资要点是什么?
- java做一个办公用品管理系统,如何使用办公用品管理系统