Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wymień SQL Server, usuń wszystko po określonym znaku

Użyj LEWY w połączeniu z CHARINDEX:

UPDATE MyTable
SET MyText = LEFT(MyText, CHARINDEX(';', MyText) - 1)
WHERE CHARINDEX(';', MyText) > 0

Zauważ, że klauzula WHERE pomija aktualizację wierszy, w których nie ma średnika.

Oto kod do sprawdzenia działania powyższego 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

Otrzymuję następujące wyniki:

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. Sprawdź, czy tabela istnieje, a jeśli nie, utwórz ją w SQL Server 2008

  2. Jak używać sortowania (Order By) w instrukcji Select w SQL Server — samouczek SQL Server / TSQL, część 109

  3. Jak zwrócić wszystkie niezaufane ograniczenia kluczy obcych w programie SQL Server (przykład T-SQL)

  4. Uzyskaj identyfikator obiektu z jego nazwy w SQL Server:OBJECT_ID()

  5. Znajdź indeks ostatniego wystąpienia podciągu za pomocą T-SQL