在列中以逗号分隔值修剪前导零

时间:2015-02-05 17:41:21

标签: mysql sql regex replace trim

Ex.Table Store

store_id             Employee_id
0020,0345,0002345    0234
0034                 0943

我尝试REPLACE(LTRIM(REPLACE(store_id,'0',' ')),' ','0'),但它仅为第一个值修剪前导零。 如何在sql查询中获取没有前导零的员工的所有storeIds?

有可能吗?

2 个答案:

答案 0 :(得分:3)

如果这是rdbms中的表,则违反1NF。你应该避免这样做。如果可以使用联结表或引用表。否则,您可以使用相同的模式并插入与单个Employee_id相对应的多个条目。

现在,要以通用的方式解决这个问题,只有一个解决方案, UDF 用户定义的功能规范为here

或将此类处理移至客户端。

答案 1 :(得分:0)

如果您只想删除前导零 - 并且没有太多 - 您可以使用replace()

select substr(replace(replace(replace(concat(',', store_id), ',0', ','),
                              ',0', ','),
                       ',0', ',')
              2, length(store_id)

这只是用逗号替换逗号后跟零,在字符串的开头和结尾添加和删除逗号。不同的数据库对substr()length()的名称略有不同,但功能通常都在那里。