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

Bagaimana cara memasukkan substring SQL ke desimal?

Jangan pikirkan seberapa efisien ini:

Select convert(decimal(28,10), rtrim(ltrim(replace(REPLACE(AdditionalDescription,'%',''), ',','.')))) As AdditionalDescription
from PriceTerm 
where AdditionalDescription like '%[%]%'

Penjelasan:

  1. Hapus % dengan mengganti dengan spasi
  2. Ganti , dengan .
  3. Hapus spasi awal atau akhir.
  4. Konversikan ke decimal(28, 10) .

Pembaruan:

Sesuai info tambahan oleh OP.

Select 
convert(decimal(28,10),replace(replace(replace(rtrim(ltrim(AdditionalDescription)), ' ',''),',','.'),'%','')) AS PercentAddition
from test 
where replace(rtrim(ltrim(AdditionalDescription)), ' ','')
like '[0-9]%[,.]%[%0-9]'
and 
isnumeric(replace(replace(replace(rtrim(ltrim(AdditionalDescription)), ' ',''),',','.'),'%',''))=1

Penjelasan '[0-9]%[,.]%[%0-9]' :

  • [0-9] - Kami hanya tertarik jika data dimulai dengan angka.
  • % - Setelah nomor itu mungkin berisi karakter apa pun. Kami menangani non-numerik dengan isnumeric di where klausa.
  • [,.] - Kami memiliki data untuk memiliki , atau . .
  • % - Setelah [,.] itu mungkin berisi karakter apa pun. Kami menangani non-numerik dengan isnumeric di where klausa.
  • [%0-9] - Kami ingin data diakhiri dengan angka atau % .

Catatan: Anda harus mengubah '[0-9]%[,.]%[%0-9]' saat Anda menemukan lebih banyak karakter buruk.

Referensi:

  1. SQLFiddle untuk dimainkan:http://sqlfiddle.com/#!3/09a34 /4
  2. LIKE - http://msdn.microsoft.com /en-us/library/ms179859(v=sql.90).aspx


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengonversi dari tipe data uang di server SQL?

  2. Apakah ada cara untuk menentukan beberapa Skema SQL Server 2008 untuk perintah 'generateChangeLog' Liquibase?

  3. Bagaimana saya bisa mengubah database default saya di SQL Server tanpa menggunakan MS SQL Server Management Studio?

  4. Kolom teks tidak menyimpan lebih dari 8000 karakter

  5. Alternatif untuk operator MAX pada bidang bit