求大神帮帮忙
看图,想把tdb_goods表中的goods_name 字段中,结尾带2的数据都把2去掉,图中代码能执行,就是没改到数据(估计是-1那里没减到,要怎么写才行)
看图,想把tdb_goods表中的goods_name 字段中,结尾带2的数据都把2去掉,图中代码能执行,就是没改到数据(估计是-1那里没减到,要怎么写才行)
2016-01-23
两个原因 :
1.LENGTH() 是以字节为单位计算字符串的长度,而SUBSTRING(str,pos,len)中的len参数是以字符为单位计算字符串长度。
2.在UTF-8中3字节=1个中文字符,GBK中2字节=1个中文字符
假设现在字段goods_name='联想lenovo2' ,
那么按字节计算的LENGTH(goods_name) = 13(utf-8编码),
按字符计算的SUBSTRING(goods_name,1,9)='联想lenovo2'。
这个时候,如果题主想要去掉该字符串尾部的数字2,应该是...SET goods_name=SUBSTRING(goods_name,1,LENGTH(goods_name)-5)....(即len参数等于8,截取第1-第8位字符),而不仅仅只是LENGTH(goods_name)-1
举报