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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 常用API,基本类型包装类,日期类,异常,集合进阶,IO流,多线程

    常用API,基本类型包装类,日期类,异常,集合进阶,IO流,多线程​十九.常用API19.1MathMath包含执行基本数字运算的方法没有构造方法,如何使用类中的成员呢?看类的成员是否都是静态的,如果是,通过类名就可以直接调用公19.1.1Math的常用方法绝对值publicclassMathDemo{publicstaticvoidmain(String[]args){//publicstaticintabs(inta):返回参数的绝对值System.out.println(

    2022年5月16日
    42
  • 网络号 子网号 主机号「建议收藏」

    网络号 子网号 主机号「建议收藏」网络号子网号主机号第一个例子:已知 IP:192.169.20.50   子网掩码:255.255.255.224  求网络号 子网号 主机号。首先子网掩码255.255.255.224转换为二进制位255.255.255.224:11111111.11111111.11111111.11100000可以看到这个掩码的左边三节与C类默认掩码相同,只有第四节与C类默认掩码不 同,

    2022年6月24日
    30
  • phpstorm 激活码(破解版激活)

    phpstorm 激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    54
  • Lamp架构_lamp平台

    Lamp架构_lamp平台一、LAMP架构介绍   现如今打开浏览器,搜索LAMP关键词,出现大量的关于LAMP的介绍,包括LAMP的一键脚本、LAMP的yum安装、LAMP的编译安装,但是对于一个非开发或非专业人员有可能根据网络参考资源实现LAMP的搭建并成功运行各种服务,也有部分人员完全照搬某些博客知识进行搭建,最后以失败告终,因此抱怨互联网资源不够成熟,其实根本原因并非如此,主要原因如下: 初学者对LA…

    2022年10月17日
    5
  • java定义数组_java中数组的三种定义方式_java中数组的定义及使用方法(推荐)…

    java定义数组_java中数组的三种定义方式_java中数组的定义及使用方法(推荐)…描述java中数组的三种定义方式java中,数组是一种很常用的工具,今天我们来说说数组怎么定义[java]viewplaincopy/***数组的三种定义方法*1.数组类型[]数组名=new数组类型[数组长度];*2.数组类型[]数组名={数组0,数组1,数组2,数组3,。。。。};*3.数组类型[]数组名=new数组类型[]{数组0,数组1,数组2,。。。};**/p…

    2022年7月8日
    21
  • opecv入门:3.6图片特效-浮雕效果[通俗易懂]

    opecv入门:3.6图片特效-浮雕效果[通俗易懂]importcv2importnumpyasnpimg=cv2.imread(‘image0.jpg’,1)imgInfo=img.shapeheight=imgInfo[0]width=imgInfo[1]gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#newP=gray0-gray1+150相邻像素值相减为…

    2022年6月20日
    33

发表回复

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

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