#公司要将mysql适配人大金仓数据库,我在更改sql的时候出现一个问题
mysql的concat函数拼接有null时结果为null ,但是我人大金仓确实忽略null
请问人大金仓还有没有拼接函数如同mysql中concat那样拼接有null时返回null
实际后端 mysql 的sql
select sp.area_code,sp.ptz_id,sc.camera_type,sc.camera_name,CONCAT((NULLIF(sc.third_party_access_url,'')),"?id=",sc.dev_id) third_party_access_url from sys_ptz sp left join sys_camera sc on sp.ptz_id=sc.ptz_id and sp.area_code=sc.area_code
where sp.ptz_id=#{ptz_id} and sp.area_code=#{dept_id}
order by sc.camera_type
人大金仓 sql
SELECT CONCAT(NULL,'你好')
结果 你好
mysql
SELECT CONCAT(NULL,'你好')
结果 null
你不应该去看金仓的操作手册嘛
根据参考资料,人大金仓也有类似于mysql中concat函数的拼接函数,其函数名为concat。如果拼接的字符串中包含空值,则返回空值。
人大金仓的SQL语句格式大同小异,因此可以参考mysql中的concat函数进行编写。具体操作步骤如下:
打开人大金仓客户端,连接到对应的数据库。
使用concat函数进行字符串拼接,语法为:concat(str1,str2,...)
将需要拼接的字符串作为参数传入函数中,同时注意如果其中有空值,返回值应该为NULL。
举例:
-- 示例1:连接非空字符串和空字符串
select concat('abc', null, 'def'); -- 返回值为null
-- 示例2:连接两个非空字符串
select concat('2022', '年'); -- 返回值为'2022年'
如果需要在where子句中使用concat函数,可以按照如下方式编写:
-- 示例3:where子句中使用concat函数
select * from table_name where concat(col1, col2) = 'some_value';
如果要批量替换某个字段的值,可以使用update语句,类似于以下示例:
-- 示例4:批量替换某个字段的值
update table_name set col1 = concat('new_value', col2) where col3 = 'some_condition';
以上就是在人大金仓中使用concat函数进行字符串拼接和批量替换的方法。