Sql: basamak ile başlar arama sütun

3 Cevap php

Ben aşağıda sql ile sorun yaşıyorum. 129 & c = araba: Temelde biçimine göre dizeleri içeren satırlar var. Ben sadece rakam bölümünü istiyorum, mesela . 129 sql sorgu:

$result = mysql_query("SELECT * FROM " . $db_table . " WHERE id LIKE '" . $id . "%'");

Neden% çalışmıyor? Çok fazla yakalar çünkü% ...% kullanamazsınız.

3 Cevap

Aslında eşleştirme fo düzenli ifadeler kullanarak tavsiye ederim, ama ne yazık ki, mysql ile eşleşen kısmını yakalamak için hiçbir yolu yoktur. Siz php çıkarma yapmak zorunda olacak. Aradığınız tüm sonuçlarını içeren bir dizi varsa $array:

$array = preg_replace('/^(\d+).*/', '$1', $array);

Siz sadece istediğiniz satırlara alınan veri miktarını azaltmak için WHERE yan tümcesi MySQL 'sıradanifade' şeyler kullanabilirsiniz. Lütfen sorgu için temel gibi görünecektir:

SELECT * FROM table WHERE field REGEXP '^$id&'

$ id PHP tarafından eklenen ve nerede istediğiniz veri alanının başında her zaman ve bir & izledi. Aksi takdirde, tabii ki, uygun olarak düzenli ifade ayarlayın.

MySQL regex motoru maalesef yakalayan yapamazsınız, bu yüzden hala soulmerge yukarıda gösterdiği gibi PHP bazı ayrıştırma yapmak gerekecek, ancak MySQL 'sıradanifade' malzeme ile, sadece sizin bildiğiniz satır ile uğraşmak zorunda olacak İstediğiniz verileri değil, tüm tablo içerir.

Böyle bir sorgu kullanarak:

SELECT  *
FROM    mytable
WHERE   id >= '0' COLLATE UTF8_BIN
        AND id < ':' COLLATE UTF8_BIN

bir rakam ile başlatmak ve ifadenizi sargable, i yapmak tüm dizeleri dönecektir. e. ve üzerinde indeks id kullanılabilir.

Bu sorgu çalıştırmak daha hızlı yapacaktır.