如何从字符串中删除特定字符,仅当它是字符串中的第一个或最后一个字符时.

Sam*_*ack 12 sql sql-server sql-server-2008

假设我有一个字符串1,2,3, 我想删除最后一个字符串,或者如果字符串看起来像,1,2,3,或者 ,1,2,3我仍然希望得到1,2,3我的结果.请尽量在答案中做一点解释.我不只是想要复制粘贴的东西而不理解它.谢谢.

das*_*ght 20

处理"修剪"这样的逗号的一种方法是使用一个CASE声明:

CASE
    WHEN str LIKE ',%,' THEN SUBSTRING(str, 2, LEN(str)-2)
    WHEN str LIKE ',%'  THEN RIGHT(str, LEN(str)-1)
    WHEN str LIKE '%,'  THEN LEFT(str, LEN(str)-1)
    ELSE str
END
Run Code Online (Sandbox Code Playgroud)

这是非常不言自明的:CASE声明考虑了三种情况 -

  • 当字符串str两边都有逗号时,
  • 当字符串str以逗号开头,但不以一个结尾时,和
  • 当字符串str以逗号结尾时,但不以一个逗号开头.

在第一种情况下,删除第一个和最后一个字符; 在第二种情况下,最左边的字符被删除; 在最后一种情况下,删除尾随字符.

在sqlfiddle上演示.