Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

ekstrak angka dari sel *varchar* dan lakukan matematika dengannya di mysql murni

Itu pasti bisa dilakukan, tetapi SQL dirancang berdasarkan aksioma nilai atom (yaitu, bentuk normal pertama ). Memisahkan bidang hampir tidak pernah diperlukan. Tentang satu-satunya waktu Anda perlu menggunakannya dalam database yang dirancang dengan baik adalah dengan tanggal di mana Anda mungkin ingin bekerja hanya dengan bulan atau tahun bidang tanggal. Meskipun Anda pasti akan menemukan database yang dirancang oleh beberapa orang idiot yang terpaksa Anda kerjakan yang melanggar konsep inti ini, itu ide yang buruk untuk memulai dengan mencoba mencari cara untuk bekerja dengan desain ini.

Selain itu, langkah terakhir Anda "simpan di sel 239" itu membuat saya berpikir Anda masih melihat database seperti spreadsheet. Mereka tidak. Komponen inti lain dari database adalah bahwa urutan baris tidak penting. Bidang, di sisi lain, selalu terkait dengan bidang lain di baris yang sama. Anda mungkin menetapkan nilai salah satu bidang menjadi sesuatu di mana bidang ID catatan itu adalah 239, tetapi Anda biasanya tidak akan pernah peduli dengan fakta bahwa catatan adalah yang ke-239.

Karena itu, berikut adalah kueri yang akan melakukan apa yang Anda inginkan:

Asumsi:format field adalah "11a22 b". Yaitu, angka dua digit, diikuti dengan huruf, diikuti oleh angka dua digit lainnya, mungkin diikuti dengan spasi dan huruf 'b'.

SELECT CAST(SUBSTRING(Value,1,2) AS INT) 
    * CAST(SUBSTRING(Value,3,2) AS INT) 
    + CASE RIGHT(Value,1) WHEN 'b' THEN -1 ELSE 0 END
FROM MyTable


  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 kerja penangguhan transaksi di MySQL?

  2. SQL untuk mengembalikan kumpulan hasil yang digabungkan

  3. Partisi tabel MySQL berdasarkan bulan

  4. Loop sudut tidak diperbarui

  5. Klausa IN yang diparameterisasi dalam pernyataan yang disiapkan menggunakan MySql, PHP dan ADODB