Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर बदलें, निश्चित वर्ण के बाद सभी को हटा दें

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)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं एक फ़ंक्शन बनाए बिना SQL सर्वर में एक सीमांकित स्ट्रिंग को कैसे विभाजित करूं?

  2. यदि कोई तालिका मौजूद है तो उसे कैसे छोड़ें?

  3. डेटाबेस तालिका से यादृच्छिक रिकॉर्ड (टी-एसक्यूएल)

  4. SQL सर्वर (T-SQL उदाहरण) में लिंक किए गए सर्वर से रिटर्न कॉलम विशेषाधिकार

  5. SQL सर्वर में COALESCE फ़ंक्शन पर 5 ज्वलंत प्रश्नों के शीर्ष उत्तर