Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

pisahkan alfa dan numerik menggunakan sql

Jika bagian numerik selalu di awal, maka Anda dapat menggunakan ini:

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

untuk mendapatkan indeks digit terakhir.

Jadi begini:

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

memberi Anda:

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

EDIT:

Jika data numerik juga menyertakan nilai ganda, Anda dapat menggunakan ini:

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

untuk mendapatkan indeks digit terakhir .

Jadi begini:

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

memberi Anda bagian numerik.

Dan ini:

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

memberi Anda bagian angka dan unit.

Berikut adalah beberapa tes yang saya buat dengan data yang Anda posting:

Masukan:

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

Keluaran:

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

Masukan:

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

Keluaran:

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

Masukan:

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

Keluaran:

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. Cara menyisipkan baris di Tabel SQL Server dengan Mengedit Baris Tabel GUI - Tutorial SQL Server / TSQL Bagian 101

  2. Mengisi tanggal yang hilang berdasarkan grup

  3. Cara Mengeksekusi SQL Query tanpa Menampilkan hasil

  4. Ekspresi Reguler MSSQL

  5. Cara mudah memilih kolom kanan sebagai Kunci Utama untuk tabel yang diberikan