Ex.Table Store
store_id Employee_id
0020,0345,0002345 0234
0034 0943
我尝试REPLACE(LTRIM(REPLACE(store_id,'0',' ')),' ','0')
,但它仅为第一个值修剪前导零。
如何在sql查询中获取没有前导零的员工的所有storeIds?
有可能吗?
答案 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()
的名称略有不同,但功能通常都在那里。