CHARINDEX के साथ संयुक्त LEFT का उपयोग करें:
UPDATE MyTable
SET MyText = LEFT(MyText, CHARINDEX(';', MyText) - 1)
WHERE CHARINDEX(';', MyText) > 0
ध्यान दें कि WHERE क्लॉज उन पंक्तियों को अपडेट करना छोड़ देता है जिनमें कोई अर्धविराम नहीं है।
उपरोक्त कार्य SQL को सत्यापित करने के लिए यहां कुछ कोड दिए गए हैं:
declare @MyTable table ([id] int primary key clustered, MyText varchar(100))
insert into @MyTable ([id], MyText)
select 1, 'some text; some more text'
union all select 2, 'text again; even more text'
union all select 3, 'text without a semicolon'
union all select 4, null -- test NULLs
union all select 5, '' -- test empty string
union all select 6, 'test 3 semicolons; second part; third part;'
union all select 7, ';' -- test semicolon by itself
UPDATE @MyTable
SET MyText = LEFT(MyText, CHARINDEX(';', MyText) - 1)
WHERE CHARINDEX(';', MyText) > 0
select * from @MyTable
मुझे निम्नलिखित परिणाम मिलते हैं:
id MyText
-- -------------------------
1 some text
2 text again
3 text without a semicolon
4 NULL
5 (empty string)
6 test 3 semicolons
7 (empty string)