Saturday, July 11, 2009

convert string ke integer dalam mysql

Apakah kita dapat melakukan operasi bilangan dalam database dengan tipe data string? Apakah itu mungkin? Sering kali kita bingung untuk mengubah tipe data yang akan kita tampilakan dari database yang bertipe string ke dalam tipe integer. Hal ini berguna apabila kita memiliki primary key yang bertipe string contohnya nomer kode buku dalam perpustakaan.
Disini kita memiliki data yang isinya merupakan kombinasi angka dan huruf. angka disini menentukan nomer buku dan huruf adalah jenis buku. Kapan saat konversi ini dibutuhkan? konversi ini akan dibutuhkan pada saat kita melakukan penambahan buku. Kita tidak boleh mengisi kode buku yang sama dengan yang lain karena itu akan mengakibatkan kerusakan data. Sebaiknya disini kan pada saat kita akan menambahkan buku maka akan diinputkan secara otomatis kode buku yang kita akan tambahkan. Disini kita tidak bisa melakukan fungsi standar yang ada dalam database seperti auto increment karena tipe data kita adalah string. Bagaimana query sqlnya? begini caranya :

SELECT MAX(CONVERT(nama_colom, tipe_data)) FROM nama_tabel;


keterangan :
max : untuk mengambil nilai maksimum
convert : mengkonversi string ke integer
tipe data : kita dapat mengisi tipe data dengan
  • BINARY[(N)]

  • CHAR[(N)]

  • DATE

  • DATETIME

  • DECIMAL[(M[,D])]

  • SIGNED [INTEGER]

  • TIME

  • UNSIGNED [INTEGER]

contoh sql :

SELECT MAX(CONVERT(kode_buku,signed)) FROM buku WHERE kode_buku like %roman%;

query tersebut bertujuan untuk mencari nilai maksimum dari kode buku yang berjenis roman. Jika anda mau mencari nilai incrementnya silahkan tambahkan +1 setelah max.

Contoh sql :
SELECT MAX(CONVERT(kode_buku,signed))+1 AS kode FROM buku WHERE kode_buku like %roman%;
sql ini akan menghasilkan nilai maksimum ditambah satu / next auto increment.

semoga ini bisa bermanfaat...
hehehe...

7 comments:

  1. Waw..
    I Fix My Problem with your Post..
    Thanks So Much Bro

    ReplyDelete
  2. Bagaimana kalau kode bukunya tidak tersusun atas angka saja? Misalnya: B99, adalah kode terakhir (maksimum) untuk klasifikasi B pada koleksi buku saya dan saya menginginkan kode baru B100 untuk buku baru saya.

    Thanks sebelumnya...

    ReplyDelete
  3. klo untuk penamaan dengan huruf, sebaiknya dilakukan pemecahan kata terlebih dahulu. pemecahan kata itu digunakan fungsi SUBSTRING().
    contoh pengaplikasiannya seperti ini.

    SELECT MAX(CONVERT(SUBSTRING(kode_buku,2)
    ,signed))+1 AS kode FROM buku WHERE kode_buku like %roman%;

    skrip diatas akan memproses pemotongan karakter kode buku terlebih dahulu.
    semisal B100.
    akan dilakukan pemotongan karakter pertama. jadi output dimulai dari karakter kedua.
    "100"
    selanjutnya sudah diterangkan diatas.
    semoga bermanfaat. . .

    ReplyDelete
  4. nanya bro,
    aku masukkan perintah itu di sql yog bisa jalan
    tapi ketika ku masukkan ke php nda jalan je bro...

    ilustrasinya :
    di basis data, UserID paling tingginya 10
    brarti harusnya dengan perintah

    $sql="SELECT MAX(CONVERT(UserID, UNSIGNED)) FROM users";

    haruse kan hasilnya 10, tapi kok malah 0 ya???

    sedangkan kalau dimasukkan ke sqlyog or phpmyadmin munculnya bener..
    salahnya di mana neh?

    ReplyDelete
  5. keren dah, thx bang.. sangat membantu :D

    ReplyDelete
  6. Terimakasih suhu sangat membantu TA saya :)

    ReplyDelete
  7. bagaimana kalau misal BS001, ketika di masukan kode tersebut malah jadi BS2, kosong kosong malah ilang. gimana itu pak

    ReplyDelete