在使用spring data jpa中的query进行将多个不同类型的id拼接成一个新的id进行查询时,遇到这个问题,主要原因是这些id的数据类型不统一,有varchar又有int类型,而sql在进行字符串拼接时如果一边是int类型,会将varchar类型转换成int类型结合 + ,类似做加法计算了(个人理解,大概是这么个意思),同样的情况在其他类型的运算中也会遇到吧,大概意思就是不同类型的值进行字符串拼接时,有一些会进行自动类型转换,而有一些在这个过程中会出现问题。因此我们需要手动地进行类型转换,而sql语法中提供了对应地函数,见下文:
将字符串与整数拼接,即varchar拼接int,不同类型间进行字符串拼接时会提示将varchar值xxx转换成数据类型int时失败。
由此可见,在做字符串拼接运算时,系统会将字符串varchar类型转化为int,若不能转换则提示错误,转换成功则进行数字计算。
因此需要将类型做一个转换,即都转换为varchar类型
sql中类型转换常用函数:
1.CAST()函数可以将某种数据类型的表达式转化为另一种数据类型
2.CONVERT()函数也可以将制定的数据类型转换为另一种数据类型
举例说明:
线上最近遇见一个场景,需要将查询结果用逗号多列拼接成一列。正好借机复习下group——concat()()的用法。
使用方法:
1. 如果需要对结果中的值排序,可以使用order by
2. separator默认逗号,可选使用自定义符号;
3. distinct可对结果去重;
举例说明:
student表,根据type分组,对name进行拼接,sql:select GROUP_CONCAT(name) from student group by type,结果如下:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)