Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server thay thế, loại bỏ tất cả sau một số ký tự

Sử dụng LEFT kết hợp với CHARINDEX:

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

Lưu ý rằng mệnh đề WHERE bỏ qua việc cập nhật các hàng không có dấu chấm phẩy.

Đây là một số mã để xác minh SQL ở trên hoạt động:

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

Tôi nhận được các kết quả sau:

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. Các thay đổi cột chỉ siêu dữ liệu mới trong SQL Server 2016

  2. Giải thích tất cả toán tử SQL Server

  3. Điều gì cần làm cho kiểu chờ ASYNC NETWORK IO?

  4. Tự động tạo các cột sql

  5. Các ký tự không phải số trả về số dương khi sử dụng ISNUMERIC () trong SQL Server