字段

时间:2018-03-29 13:39:55

标签: mysql replace

如果我从MySQL获取12345的值并且我想在前端显示为Mo Tu We Th Fr,那么如何才能实现所有可能的组合呢?

我可以写一个案例陈述,但是会有数百种组合来涵盖所有可能的值。

该值将是1到7个字符之间的长度,使用介于1和7之间的数字,并且可以按任何顺序排列,因此3417应该读取We Th Mo Su,而645应该读取Sa Th Fr,依此类推。我不能在应用程序中执行此操作,因此必须尝试找出如何在MySQL中执行此操作。它们作为varchar存储在MySQL中的单列中。

我可以在同一个选择中多次使用替换,例如:

REPLACE(REPLACE(REPLACE(field, '1', 'Mo '), '2', 'Tu'), '3', 'We')

还是有另一种方式吗?

3 个答案:

答案 0 :(得分:0)

让我们假设您在结构中有一个表

tl_days
__________
id | alias

我们有一些数据,如

id: 1, alias : Mon
id: 2, alias : Tue

我们可以运行一个简单的查询来检查数字数组的id。

SELECT alias FROM 'tl_days' WHERE id in (1,2,3,4);

将缩写日期作为缩写。

答案 1 :(得分:0)

如果有多个值,则不应为所有值写入替换,而是创建映射表1 | su,2 | mo ...,然后使用join从中获取'su','mo'值映射表

答案 2 :(得分:0)

首先,您需要确保表架构数据匹配。如果可以接受从数值更改为文本值。

Update table_name set column_name = 
  ( 
     CASE 
       when column_name = 1 then 'Mo'
       when column_name =  2 then 'Tu'
       when column_name =  3 then 'We'
       when column_name =  4 then 'Th'
       when column_name =  5 then 'Fr'
   End 
   );

这是显示此类更改的SQL FIDDLE