如果它是逗号SQL,则删除最后一个字符

时间:2014-12-24 16:42:38

标签: sql if-statement

我有8个if语句,如果字母在字段中打印一个单词。 要做的是在该字段中包含所有选项的串联字符串。 现在我的问题是如何在最后一个选项之前放置OR并在最后一个选项上取下逗号。 这就是我得到的

    DECLARE @VAR1 VARCHAR(30)
DECLARE @VAR2 VARCHAR(30)
DECLARE @VAR3 VARCHAR(30)
DECLARE @VAR4 VARCHAR(30)
DECLARE @VAR5 VARCHAR(30)
DECLARE @VAR6 VARCHAR(30)
DECLARE @VAR7 VARCHAR(30)
DECLARE @VAR8 VARCHAR(30)
DECLARE @MASTR VARCHAR(90)
DECLARE @PATSTR VARCHAR(30)

SET @VAR1 = ''
SET @VAR2 = ''
SET @VAR3 = ''
SET @VAR4 = ''
SET @VAR5 = ''
SET @VAR6 = ''
SET @VAR7 = ''
SET @VAR8 = ''
SET @MASTR = ''
SET @PATSTR = (SELECT EMAIL FROM CLIENT
                WHERE CLIENT_KEY = 5)
IF @PATSTR LIKE '%a%' PRINT @MASTR + 'Cash, '
ELSE PRINT ''
IF @PATSTR LIKE '%b%' PRINT @MASTR + 'Check, '
ELSE PRINT ''
IF @PATSTR LIKE '%c%' PRINT @MASTR + 'Money Order, '
ELSE PRINT ''
IF @PATSTR LIKE '%d%' PRINT @MASTR + 'Visa, '
ELSE PRINT ''
IF @PATSTR LIKE '%e%' PRINT @MASTR + 'Mastercard, '
ELSE PRINT ''
IF @PATSTR LIKE '%f%' PRINT @MASTR + 'Discover, '
ELSE PRINT ''
IF @PATSTR LIKE '%g%' PRINT @MASTR + 'Amex, '
ELSE PRINT ''
IF @PATSTR LIKE '%h%' PRINT @MASTR + 'Diner Club International, '
ELSE PRINT ''
PRINT @MASTR

2 个答案:

答案 0 :(得分:3)

试试这个

IF RIGHT(RTRIM(@MASTR),1) = ','
BEGIN
-- Chop off the end character
SET @MASTR = LEFT(@String, LEN(@MASTR) - 1)
END
SELECT @MASTR

答案 1 :(得分:3)

包含一个案例陈述,以检查每个条件检查中@MASTR是否为空,如下所示:

IF @PATSTR LIKE '%b%'
SET @MASTR = @MASTR
  + CASE WHEN LEN(@MASTR) > 0 THEN ', ' ELSE '' END
  + CASE WHEN @PATSTR LIKE '%b' then 'OR ' ELSE '' END
  + 'Check'