Trim 列中逗号分隔值中的前导零

Trim leading zeros in comma separated values in a column

Ex.Table商店

store_id             Employee_id
0020,0345,0002345    0234
0034                 0943

我尝试了 REPLACE(LTRIM(REPLACE(store_id,'0',' ')),' ','0'),但它仅针对第一个值删除了前导零。 如何在 sql 查询中获取不带前导零的员工的所有商店 ID?

可能吗?

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

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

这只是将逗号后跟零替换为逗号,在字符串的开头和结尾添加和删除逗号。 substr()length() 不同的数据库名称略有不同,但功能大致相同。

如果这是 rdbms 中的 table,则它违反了 1NF。你应该避免这样做。如果可能,请使用连接点 tables 或引用 tables。否则,您可以使用相同的架构并插入与单个 Employee_id 相对应的多个条目。

现在,要以通用方式解决这个问题,只有一个解决方案,UDF 的用户自定义函数 规格为here

或者把这种处理移到客户端。