阅读背景:

SQL表关联条件中字段的拼接

来源:互联网 
今天在公司写sql时遇到一个问题,之前没有见过。就是在库存表tbl_inventory中有一字段item_no,可卖数表tbl_sku_avl中有两个字段分别为owner_code和itemno,要关联库存表和可卖数表的话,则需要让库存表中的item_no等于可卖数表中owner_code连接上字符'-',再连接上itemno。 于是,我写了以下语句: SELECT * FROM tbl_inventory inv LEFT OUTER JOIN tbl_sku_avl tsa ON inv.item_no = tsa.owner_code+'-'+tsa.itemno WHERE inv.type = '0' AND inv.wh_cd = 'AXT' AND itm.client_code ='HAT' 测试发现,匹配不到数据,并且这样进行sql字段的拼接明显是有问题的。 百度很多资料后,修改为以下语句: SELECT * FROM tbl_inventory inv LEFT OUTER JOIN tbl_sku_avl tsa ON inv.item_no = CONCAT(tsa.owner_code,'-',tsa.itemno) WHERE inv.type = '0' AND inv.wh_cd = 'AXT' AND itm.client_code ='HAT' 此时问题得到解决,能够查询出相应数据。 总结:在进行数据库表的关联的时候,当一个表中的字段为另一张表中两个或多个字段的拼接时,用CONCAT(str1,str2,str3,...)方法。返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。 使用CONCAT(str1,str2,str3,...)方法注意: 1.如果所有参数均为非二进制字符串,则结果为非二进制字符串。 2.如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。 3.一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col) 今天在公司写sql时遇到一个问题,之前没有见过。就是在库存表tbl_inventory中有一字



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: