2013-02-14 3 views
0

Я использую cakephp 1.2, и у меня есть такая ситуация:
У меня есть таблица с полем «класс», где класс может быть «A», «B», «C», «G» или строка из трех букв «DBB», «ABA» и т. Д.
Каждая строка имеет смысл (например, A = Статья, B = Книга и т. Д.).
я пишу этот код:
Получить длину поля в mysql для запроса

if ($_GET['classificazione']!="art0") 
{ 
    $classificazione=$_GET['classificazione']; 
    if ($classificazione=="A"||$classificazione=="B"||$classificazione=="C"||$classificazione=="G") 
       $conditions[]=array('classe =' => "$classificazione"); 

Это работает для «одна буква» случай, но я не знаю, что делать с 2-х или более букв.
Поскольку я не волнует, если они равны («DBB» и «ABA» являются оба документа), я имел в виду, чтобы проверить длину, так что я попытался это:

else 
    $conditions[]=array('LENGTH(classe) > 1'); } 

Я тестировал еще, и теперь он работает.

+1

Я не но, насколько я понял, вам нужно [CHAR_LENGTH] (http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_char-length) –

+0

'if ($ classificazione = = "A" || \t $ classificazione == "B" || \t $ classificazione == "C" || \t $ classificazione == "G" || \t $ classificazione == "DBB" || \t $ classificazione == «ABA») 'не выполняет свою работу? – SparKot

+0

@DoSparKot С Else я положил его на работу. Я думаю, что это нормально, но у меня может быть более двух букв, поэтому мне нужен самый общий случай – Ettore

ответ

1

Использование LENGTH() для проверки длины в байтах:

SELECT str FROM sometable WHERE LENGTH(str) = 5; 

Или CHAR_LENGTH() для проверки длины в количестве символов (полезно для мульти-байтовых строк):

SELECT str FROM sometable WHERE CHAR_LENGTH(str) = 5;