java sql拼接字符串_SQL中字符串拼接

java sql拼接字符串_SQL中字符串拼接1.概述在SQL语句中经常需要进行字符串拼接,以sqlserver,oracle,mysql三种数据库为例,因为这三种数据库具有代表性。sqlserver:select’123’+’456′;oracle:select’123’||’456’fromdual;或selectconcat(‘123′,’456’)fromdual;mysql:selectconcat(‘123’,’…

大家好,又见面了,我是你们的朋友全栈君。

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”表为例,进行详细分析:

003cc15df87786c60a5684623e2d5977.png

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

b10c74cf02035df4b24ff42199e7a949.png

4.字符串 + 字符串

字符串 + 字符串,则直接进行拼接。若某字段为NULL,则计算结果为NULL。

SELECT *, uname + place AS ‘uname + place’ FROM Users

435a468f7714b4770cf4b9d430fcf209.png

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’;

0da7c3b30662320b36f4175aa1656e81.png

SELECT * FROM Users WHERE uname = ‘aa’ AND place = ‘bzz’;

36f70051c50249dc93c84a8ed228cd6f.png

为了防止上述情况的发生,可以再列A和列B之间加上一个较特殊的字符串。

SELECT * FROM Users WHERE uname + ‘rain@&%$man’ + place = ‘aa’ + ‘rain@&%$man’ + ‘bzz’

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149172.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月16日 下午11:31
下一篇 2022年6月16日 下午11:31


相关推荐

  • html中div滚动条设置,DIV滚动条属性及样式设置方式「建议收藏」

    html中div滚动条设置,DIV滚动条属性及样式设置方式「建议收藏」这里向大家描述一下DIV滚动条属性及样式设置,所谓DIV滚动条,就是利用DIV标签,在里面嵌入CSS样式表,加入overflow的属性值,这样,当div所规范的区域内的内容达到一定程序时,滚动条就派上用场。DIV滚动条属性及样式设置所谓DIV滚动条,就是利用DIV标签,在里面嵌入CSS样式表,加入overflow的属性值,这样,当div所规范的区域内的内容达到一定程序时,滚动条就派上用场。其功能大…

    2022年7月12日
    51
  • 深入浅出:hadoop分布式文件存储系统(HDFS)

    深入浅出:hadoop分布式文件存储系统(HDFS)分布式文件存储系统如上图所示,HDFS也是按照Master和Slave的结构。分NameNode、SecondaryNameNode、DataNode这几个角色。NameNode:是Master节点,是大领导。管理数据块映射;处理客户端的读写请求;配置副本策略;管理HDFS的名称空间;SecondaryNameNode:是一个小弟,分担大哥namenode的一部分工作量;是Na…

    2022年5月10日
    53
  • 购买iPad Pro

    购买iPad Pro

    2026年3月15日
    2
  • 协方差的意义和计算公式

    协方差的意义和计算公式学过概率统计的孩子都知道 统计里最基本的概念就是样本的均值 方差 或者再加个标准差 首先我们给你一个含有 n 个样本的集合 依次给出这些概念的公式描述 这些高中学过数学的孩子都应该知道吧 一带而过 很显然 均值描述的是样本集合的中间点 它告诉我们的信息是很有限的 而标准差给我们描述的则是样本集合的各个样本点到均值的距离之平均 以这两个集合为例 0 8 12 20 和 8 9 11 1

    2026年3月20日
    1
  • 360浏览器

    360浏览器

    2026年3月12日
    4
  • opnet环境变量设置_类型变量

    opnet环境变量设置_类型变量Objid(对象id)和int(用户id)对象id的变量类型是Objid用户id的变量类型是intObjid是系统分配的对象识别号,全局唯一,整数。userid是节点模型(对象的一种)的一个属性,由用户设置,不唯一。对象分为两种:抽象对象:复合属性具体对象:模块、收信机、发信机、节点、子网lmz:尽管对象id是一个整数,但是又不仅仅是一个整数。可以想象,opnet内部肯

    2025年6月14日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号