sqlserver字符串拼接的实现

2023-12-01 0 236
目录
  • 1. 概述
  • 2. 数字 + 字符串
    • 2.1 int + varchar
    • 2.2 decimal + varchar
  • 3. 数字 + 数字
    • 4.字符串 + 字符串
      • 5. 使用CAST和CONVERT函数进行类型转换

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

        sqlserver字符串拼接的实现

        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

        sqlserver字符串拼接的实现

        4.字符串 + 字符串

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

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

        sqlserver字符串拼接的实现

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

        sqlserver字符串拼接的实现

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

        sqlserver字符串拼接的实现

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

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

        到此这篇关于sqlserver字符串拼接的实现的文章就介绍到这了,更多相关sqlserver字符串拼接内容请搜索悠久资源以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源!

        您可能感兴趣的文章:

        • SQLSERVER 拼接含有变量字符串案例详解

        收藏 (0) 打赏

        感谢您的支持,我会继续努力的!

        打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
        点赞 (0)

        悠久资源 MsSql sqlserver字符串拼接的实现 https://www.u-9.cn/database/mssql/5253.html

        常见问题

        相关文章

        发表评论
        暂无评论
        官方客服团队

        为您解决烦忧 - 24小时在线 专业服务