Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

разделете алфа и числови с помощта на sql

Ако цифровата част винаги е в началото, тогава можете да използвате това:

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

за да получите индекса на последната цифра.

И така, това:

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

ви дава:

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

РЕДАКТИРАНЕ:

Ако числовите данни включват и двойни стойности, тогава можете да използвате това:

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

за да получите индекса на последната цифра .

И така, това:

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

ви дава числовата част.

И това:

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

ви дава както числова, така и единична част.

Ето някои тестове, които направих с данните, които сте публикували:

Въвеждане:

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

Изход:

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

Въвеждане:

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

Изход:

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

Въвеждане:

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

Изход:

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. Как да създам външен ключ в SQL Server?

  2. Как да замените нулеви стойности с неизвестно в изявление за избор в SQL Server - SQL Server / TSQL урок, част 111

  3. Най-добри практики за аварийно възстановяване на Microsoft SQL Server

  4. списък, разделен със запетая, като единичен низ, T-SQL

  5. Как да активирате ограничение на външния ключ в SQL Server (примери за T-SQL)