分割列的值并适当地返回分割后的值

3

我有下面的表格 (MYSQL),

CREATE TABLE x_table (name VARCHAR(100), currencyType VARCHAR(100));
INSERT INTO x_table VALUES ('Rupee', '5X34'), ('Dollar', '3X34$'), ('Yen', '7X57');

我想将currencyType列拆成两个。

  1. 按照X拆分当前的currencyType列

  2. 返回count (count必须是一个整数值 - 不是字符串)
    对于卢比 - count为5,
    对于美元 - count为3

  3. 返回type
    对于卢比 - 34不包含$,所以类型将是“非美元”
    对于美元 - 34$包含$,类型将是“美元”
    对于日元 - 57不包含$,类型将是“非美元”

尝试过:

 select name, 
        SUBSTRING_INDEX(currencyType, 'X', 1) as count,
        SUBSTRING_INDEX(currencyType, 'X', 2) as type   
 from x_table

但是不确定如何正确实现。

演示

1个回答

1

将您的查询修改为以下内容:

SELECT 
  name, 
  CAST(SUBSTRING_INDEX(currencyType, 'X', 1) AS UNSIGNED) AS count,
  CASE 
    WHEN INSTR(SUBSTRING_INDEX(currencyType, 'X', -1), '$') 
    THEN 'dollar' ELSE 'Non-dollar'
  END AS type   
FROM x_table

查看演示

CAST(SUBSTRING_INDEX(currencyType, 'X', 1) AS UNSIGNED): 这将把字符串左侧部分转换为正数。

要从右侧开始搜索字符串(获取字符串的右侧部分),请在substring_index函数中的数字参数中使用-1。

INSTR函数检查字符串是否包含“$”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接