从字符串末尾删除特定字符

时间:2018-03-11 15:38:28

标签: sql-server tsql sql-server-2016

我在一张表中记录的记录很少

 .modal-body  {
     padding:15px, 8% !Important;
 }

我想检查字符串末尾是否存在.carousel-control-prev { left: -50px; } .carousel-control-next { right: -50px; } (斜杠),如果存在,则仅从末尾删除斜杠。

我知道使用 123456/ 53787899/ 68239003-21/ 5761289903120,7278/ 574738992842/478389 /会有效。

但是,如何使用它?

我希望我的输出字符串是

charindex

注意:partindex(斜杠)后面可能有空格。请让我知道这样做。

DDL

            123456
            53787899
            68239003-21
            5761289903120,7278
            574738992842/478389

3 个答案:

答案 0 :(得分:3)

您可以使用RIGHT匹配字符数来查找字符串是否以'/'字符结尾。

  DECLARE @STR VARCHAR(100)='5761289903120,7278/'
  SELECT 
  CASE WHEN RIGHT(@STR,1)='/' THEN SUBSTRING(@STR, 1, (LEN(@STR) - 1)) ELSE @STR END

工作示例

    WITH MT AS
    (
     SELECT * FROM
     (VALUES('123456/'),('53787899/'),('68239003-21/'),('5761289903120,7278/'),('574738992842/478389')) T(mystring)
    )

   SELECT 
      CASE WHEN RIGHT(mystring,1)='/' THEN SUBSTRING(mystring, 1, (LEN(mystring) - 1)) ELSE mystring END
   FROM MT

<强>输出

    MyString
   ---------
    123456
    53787899
    68239003-21
    5761289903120,7278
    574738992842/478389

编辑:如果你想删除最后一个空格,你可以改变查询,如下所示。

RIGHT(RTRIM(mystring),1)='/'

在Where子句中使用

 SELECT  CASE WHEN RIGHT(RTRIM(MY_COLUMN),1)='/' THEN SUBSTRING(MY_COLUMN, 1, (LEN(MY_COLUMN) - 1)) ELSE MY_COLUMN END AS MY_COLUMN
 FROM [MY_TABLE]
 WHERE RTRIM(MY_COLUMN) LIKE '%/'

如果要将其更新回表格,可以使用以下查询。

 UPDATE T
 SET T.MY_COLUMN = CASE WHEN RIGHT(RTRIM(MY_COLUMN),1)='/' THEN SUBSTRING(MY_COLUMN, 1, (LEN(MY_COLUMN) - 1)) ELSE MY_COLUMN END
 FROM [MY_TABLE] T

答案 1 :(得分:0)

这样的事情:

declare @t table (
    MyString VARCHAR(40) NULL
)

insert @t (MyString)
VALUES ('123456/'),
    ('53787899/'),
    ('68239003-21/'),
    ('5761289903120,7278/'),
    ('574738992842/478389')

select  MyString,
        CASE WHEN MyString LIKE '%/' THEN LEFT(MyString, LEN(MyString)-1) ELSE MyString END NewValue
from    @t

答案 2 :(得分:0)

我认为这样做会

declare @T table (string varchar(100));
insert into @T values 
       (' 123456/')
      , (' 53787899/')
      , ('68239003-21/')
      , ('5761289903120,7278/')
      , ('5761289903120,7279/ ')
      , ('574738992842/478389 ')
      , ('574738992842/478390 ');
select '''' + t.string + '''' from @T t;
update t 
set t.string = SUBSTRING(LTRIM(RTRIM(T.string)), 1, LEN(LTRIM(RTRIM(T.string))) - 1)
from @T t
where t.string like '%/';
select t.string from @T t;