简体   繁体   中英

Compare and update two characters in a string

I have a table with name table1 containing:

col1
a.b

1.1
2.2
3.3
1.3
2.3

在此处输入图片说明

I want compare left character of dot (a) with right character of dot (b), and if a = b, remove .b .

So table1 must be changed to this:

col1
a.b

1
2
3
1.3
2.3

在此处输入图片说明

Try this:

DECLARE @tbl1 as TABLE(
   Id  INT,
   col1  VARCHAR(20)
)

INSERT INTO @tbl1 VALUES(1,'1.1')
INSERT INTO @tbl1 VALUES(2,'2.2')
INSERT INTO @tbl1 VALUES(3,'3.3')
INSERT INTO @tbl1 VALUES(4,'1.3')
INSERT INTO @tbl1 VALUES(5,'1.4')

SELECT
    Id,
    CASE WHEN SUBSTRING(col1,0,CHARINDEX('.',col1))=SUBSTRING(col1,CHARINDEX('.',col1)+1,len(col1))
    THEN SUBSTRING(col1,0,CHARINDEX('.',col1))
    ELSE col1
    END
FROM
@tbl1

UPDATE:

UPDATE @tbl1 
    SET col1=SUBSTRING(col1,0,CHARINDEX('.',col1))
WHERE SUBSTRING(col1,0,CHARINDEX('.',col1))=SUBSTRING(col1,CHARINDEX('.',col1)+1,len(col1))

I would write the update as:

with toupdate as (
      select t1.*,
             left(t1.col1, charindex('.', t1.col1 + '.') - 1) as firstpart
      from table1 t1
     )
update toupdate
     set col1 = firstpart
     where col1 = firstpart + '.' + firstpart;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM