首页 > 解决方案 > 字符串SQL左右case语句

问题描述

我正在尝试编写一个 case 语句以输出到“---”的左侧或右侧
这可以是 --- 之前或之后的任意数量的字符,
为了简单起见,我使用了下面的示例。

my productdescription = aaa---bbb

CASE WHEN productid = 'atbl%' THEN OUTPUT everything TO the LEFT OF "---"  from the productdescription  ( so OUTPUT aaa)

WHEN productid = 'atbr%' THEN OUTPUT everything TO the RIGHT OF "---" from the productdescription  ( so OUTPUT bbb)

ELSE ''

END AS leftright

任何帮助将非常感激

标签: sql

解决方案


我认为您需要操作员LIKE而不是=(除非您productid实际包含%)。
对于MySql
使用函数SUBSTRING_INDEX()

CASE 
  WHEN productid LIKE 'atbl%' THEN SUBSTRING_INDEX(productdescription, '---', 1)
  WHEN productid LIKE 'atbr%' THEN SUBSTRING_INDEX(productdescription, '---', -1)
  ELSE ''
END AS leftright

如果您使用的是SQL Server ,请使用LEFT(),RIGHT()CHARINDEX():

CASE 
  WHEN productid LIKE 'atbl%' THEN LEFT(productdescription, CHARINDEX('---', productdescription) - 1)
  WHEN productid LIKE 'atbr%' THEN RIGHT(productdescription, LEN(productdescription) - CHARINDEX('---', productdescription) - 2)
  ELSE ''
END AS leftright

推荐阅读