1. 概述

在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中没有concat函数(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'

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[SQL中字符串拼接]http://www.zyiz.net/tech/detail-130533.html

java sql拼接字符串_SQL中字符串拼接相关推荐

  1. 替换字符串列表中字符串

    //替换字符串列表中字符串 procedure StringsReplace(var S : TStrings; OldPattern, NewPattern: string; Flags: TRep ...

  2. java string 连续字符_Java中字符串中连续相同字符去重方法

    导读 正文 最近参加了一个面试,问到了如何在一个字符串中连续相同字符去重,想了想用正则表达式应该可以轻松实现.可是由于长时间没有编码了,而且由于原先的工作用到的比较少.具体的自己就不会写正则表达式用到 ...

  3. java中的字符串_java中字符串的操作

    //创建一个字符数组 char[] charArr = {'a','b','c','d','e','f','g'}; //创建一个字符串 String str = new String(charArr ...

  4. java 相同字符不连续_Java中字符串中连续相同字符去重方法

    搜索热词 最近参加了一个面试,问到了如何在一个字符串中连续相同字符去重,想了想用正则表达式应该可以轻松实现.可是由于长时间没有编码了,而且由于原先的工作用到的比较少.具体的自己就不会写正则表达式用到的 ...

  5. java indexof 子字符串_Java中字符串中子串的查找共有四种方法(indexof())

    Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现的指定子字符串在此 ...

  6. java equals equalsignorecase 性能_JAVA中字符串比较equals()和equalsIgnoreCase()的区别

    JAVA中字符串比较equals()和equalsIgnoreCase()的区别 1.使用equals( )方法比较两个字符串是否相等.它具有如下的一般形式: boolean equals(Objec ...

  7. mysql sql字段切割_sqlserver中字符串切割函数总结

    本文章收藏了大量的在sqlserver中字符串切割函数,包括了自用自定义函数或sql带带的函数来操作,有需要了解的同学可参考一下 实例1 循环while一个个读取 代码如下 复制代码 ALTER FU ...

  8. java sql语法解析_Java中的SQL语句解析

    String sql = "SELECT userId,password FROM Table_1 where userId ='" + userId +"' and p ...

  9. c语言void replace(str,ch)替换字符串,C++ 中字符串查找、字符串截取、字符串替换...

    1.字符串查找 s.find(s1) //查找s中第一次出现s1的位置,并返回(包括0) s.rfind(s1) //查找s中最后次出现s1的位置,并返回(包括0) s.find_first_of(s ...

最新文章

  1. apache日志设置方法:按时间、按大小记录
  2. Springboot的slf4j的配置文件模板
  3. DayDayUp:今天早上看到一条朋友圈——《吃苦与穷的深刻认知》
  4. java 访问线程_java线程简介(共享对数据的访问)
  5. 递归调用方法时栈内存是如何变化的?(使用内存图演示递归调用过程)
  6. 海报素材模板|超好看的新年素材,你真的不来看一看吗?
  7. 百度发布全新 NLG 训练模型 ERNIE-GEN,获 5 项 SOTA!
  8. 莫陷入点击和评论陷阱
  9. MATLAB 基础知识学习
  10. Matlab软件包及安装
  11. 需求规格说明书【样本】
  12. Toastr 通知提示插件
  13. gentoo USE 项目解释
  14. 标签设计打印软件:LabelJoy 6.23.0 Crack
  15. [hdu 6355] Fireflies
  16. 考勤管理代码:python基础练手用的
  17. win10 nginx部署静态资源服务器和HTML
  18. 谷歌操作系统_Google的操作系统到来-但不是从Google
  19. 专业电子化招投标系统研发商总结招标控制价常犯的7个错误
  20. 大学计算机课表格编辑排版教程,计算机应用基础教程第7课:表格处理与图文排版.pptx...

热门文章

  1. 〖编程初学者的自我修养 - 精炼面试篇③〗- 如何通过「自我介绍」更好的推销自己
  2. java实现键盘录入一个字符串,统计该字符串中大写字母和小写字母数字字符空格出现的次数
  3. Unity 性能优化总结(适合初学者)
  4. Linux设备驱动---OMAP3630 Linux I2C总线驱动分析(1)
  5. linux脚本执行提示: No such file or directory问题解决
  6. AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系
  7. Angular-路由
  8. 计算机毕业设计之开山车行二手车交易系统
  9. [渝粤教育] 浙江大学 电工电子学 参考 资料
  10. linux反tp补丁,lol反tp补丁