2015-08-05 2 views
1

Я столкнулся с вопросом с MySQL. Мне нужно просмотреть все записи, используя Алфавитный порядок.Как показать запись MySQL по алфавиту?

Вот мой код -

$alphabetsArr = array('#', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'); 

foreach($alphabetsArr as $alpha) { 
     $conditions = array('CreateListing.is_complete' => 1, 'BuilderType.builder_type LIKE'=>$alpha.'%'); 
     $alphabets[$alpha] = $this->CreateListing->find('all', array('conditions' => $conditions, 'group' => array('CreateListing.builder'), 'contain' => array('BuilderType'), 'fields' => $fields, 'order' => $order, 'limit' => 50)); 
     //$alphabets[$alpha] = mysql_fetch_array(mysql_query("SELECT * FROM create_listings WHERE name LIKE '".$alpha."%'")); 
} 


<?php 
    foreach ($alphabets as $key => $letter) { 
     if (count($letter)) { 
     ?> 
     <div class="make-group"><a id="<?php echo $key; ?>-make"></a><h3><?php echo $key; ?></h3> 
      <div class="make-list columnizer-3"> 
       <?php foreach ($letter as $brandname) { ?> 
       <div><a href="<?php echo $this->webroot.'listing/brand:'.$brandname['BuilderType']['seo'];?>"><?php echo $brandname['BuilderType']['builder_type']; ?></a></div> 
    <?php } ?> 
       </div> 
       <br class="clear"> 
      </div> 
     <?php } 
    } 
?> 

Мой код успешно работает. Но в случае, если я получаю одну проблему при поиске неалфавитного текста. там есть #, поэтому я хочу, чтобы показать все неалфавитный текст, начинающийся с Number или any Symobl или Special character

Как искать этот текст, кроме A-Z в одном запросе?

NB - Это код CakePHP. Поэтому не беспокойтесь об этом коде. Мне нужен запрос. Если вы знаете, ядро ​​PHP, то вы можете оставить свой ответ с помощью ядра PHP

ответ

1

Вы можете использовать RLIKE с отрицанием NOT, он будет соответствовать колонку имени и возвращает строки, которые не начинается с к г алфавитам

SELECT 
    * 
FROM 
    create_listings 
    WHERE name NOT RLIKE '^[a-z]' 

DEMO

+1

Я никогда не использовал RLIKE. Спасибо за хороший ответ :) – Chinmay235

0

вы также можете попробовать этот

SELECT * FROM table WHERE first_name REGEXP '^[^A-Za-z]';