Tôi có một tạm thời bảng với columnname NAME
và dữ liệu như thế này:Cách tách một chuỗi xuất hiện hai lần?
NAME
-------------
sumansuman
nehaneha
anjalianjali
Tôi muốn đầu ra như thế này:
NAME
-------------
suman
neha
anjali
Tôi có một tạm thời bảng với columnname NAME
và dữ liệu như thế này:Cách tách một chuỗi xuất hiện hai lần?
NAME
-------------
sumansuman
nehaneha
anjalianjali
Tôi muốn đầu ra như thế này:
NAME
-------------
suman
neha
anjali
Nếu bạn chắc chắn rằng mỗi tên được nhân đôi chính xác thì đây nên làm việc
SELECT LEFT(name, LEN(name)/2) FROM temp
Để bắt các hàng không có trường hợp:
SELECT name FROM temp
WHERE NOT name = LEFT(name, LEN(name)/2) + LEFT(name, LEN(name)/2)
cảm ơn bạn rất nhiều. Nó rất hữu ích – suman
thử một cái gì đó như thế này,
DECLARE @MyTable TABLE(NAME VARCHAR(100))
INSERT INTO @MyTable
VALUES
('sumansuman')
,('nehaneha')
,('anjalianjali')
,('suman')
,('nehaanjali')
SELECT CASE WHEN SUBSTRING(NAME,1,len(NAME)/2) = SUBSTRING(NAME,(len(NAME)/2)+1,len(NAME))
THEN SUBSTRING(NAME,1,len(NAME)/2)
ELSE NAME
END
FROM @MyTable
kết quả là:
Output
------
suman
neha
anjali
suman
nehaanjali
cảm ơn cho câu trả lời. nó rất hữu ích – suman
@sumar, nếu bạn nghĩ đây là giải pháp cho câu hỏi của bạn, hãy đánh dấu nó là câu trả lời để nó có thể hữu ích cho người khác. –
Sử dụng một CTE để làm cho truy vấn cả hai hiệu quả hơn (chỉ thực hiện LEFT và LEN một lần cho mỗi hàng) và dễ đọc hơn:
with CTE as (
select name, LEFT(name, LEN(name)/2) half from temp
)
select case name when half + half then half
else name end as name
from CTE
Nếu bạn muốn chỉ tên gấp đôi sửa chữa:
with CTE as (
select name, LEFT(name, LEN(name)/2) half from temp
)
select half as name
from CTE
where name + half + half
Bạn có thể sử dụng Left & Ngay chức năng Để thực hiện logic có thể đọc được:
DECLARE @MyTable TABLE(NAME VARCHAR(100))
INSERT INTO @MyTable
VALUES
('sumansuman')
,('nehaneha')
,('anjalianjali')
,('suman')
,('nehaanjali')
SELECT Case
when Left(NAME,len(NAME)/2) = Right(NAME,len(NAME)/2)
then Left(NAME,len(NAME)/2)
else NAME
end
FROM @MyTable
http://stackoverflow.com/questions/20882509/sql- server-2000-remove-duplicates-from-comma-separated-string – mohan111