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

tách chữ và số bằng sql

Nếu phần số luôn ở đầu thì bạn có thể sử dụng phần này:

PATINDEX('%[0-9][^0-9]%', ConcUnit)

để lấy chỉ mục của chữ số cuối cùng.

Vì vậy, điều này:

DECLARE @str VARCHAR(MAX) = '4000 ug/ML' 

SELECT LEFT(@str, PATINDEX('%[0-9][^0-9]%', @str )) AS Number,
       LTRIM(RIGHT(@str, LEN(@str) - PATINDEX('%[0-9][^0-9]%', @str ))) As Unit

mang lại cho bạn:

Number  Unit
-------------
4000    ug/ML

CHỈNH SỬA:

Nếu dữ liệu số cũng bao gồm các giá trị kép, thì bạn có thể sử dụng điều này:

SELECT LEN(@str) - PATINDEX ('%[^0-9][0-9]%', REVERSE(@str))

để lấy chỉ mục của chữ số cuối cùng .

Vì vậy, điều này:

SELECT LEFT(@str, LEN(@str) - PATINDEX ('%[^0-9][0-9]%', REVERSE(@str)))

cung cấp cho bạn phần số.

Và đây:

SELECT LEFT(@str, LEN(@str) - PATINDEX ('%[^0-9][0-9]%', REVERSE(@str))) AS Numeric,
       CASE 
          WHEN CHARINDEX ('%', @str) <> 0 THEN LTRIM(RIGHT(@str, LEN(@str) - CHARINDEX ('%', @str)))
          ELSE LTRIM(RIGHT(@str, PATINDEX ('%[^0-9][0-9]%', REVERSE(@str))))
       END AS Unit

cung cấp cho bạn cả phần số và phần đơn vị.

Dưới đây là một số thử nghiệm mà tôi đã thực hiện với dữ liệu bạn đã đăng:

Đầu vào:

DECLARE @str VARCHAR(MAX) = '50 000ug/ML'

Đầu ra:

Numeric Unit
------------
50 000  ug/ML

Đầu vào:

DECLARE @str VARCHAR(MAX) = '99.5%'

Đầu ra:

Numeric Unit
------------
99.5    

Đầu vào:

DECLARE @str VARCHAR(MAX) = '4000 . 35 % ug/ML'

Đầu ra:

Numeric     Unit
------------------
4000 . 35   ug/ML


  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ách T-SQL hiệu quả nhất để đệm một varchar ở bên trái đến một độ dài nhất định?

  2. Tổng quan về nén dữ liệu trong SQL Server

  3. Sử dụng INNER JOIN để kết hợp các bảng của máy chủ SQL và hiển thị chúng trong ASP.NET Webforms

  4. Tìm thứ tự nút trong tài liệu XML trong SQL Server

  5. Sử dụng SERVERPROPERTY () để nhận thông tin máy chủ trong SQL Server