2016-03-31 2 views
2

В настоящее время у меня есть этот запрос выбора, где он выбирает фильмы из базы данных. Теперь я пытаюсь ограничить столбец description, чтобы выбрать только 100 символов для показа. Есть ли способ сделать это. Заранее спасибо.Выберите предел запроса символов столбца не более 100

Это мой текущий SQL запрос:

"SELECT title, description, release_year, rating, f.last_update, c.name FROM nfc_film f 
INNER JOIN nfc_film_category fc ON f.film_id = fc.film_id 
INNER JOIN nfc_category c ON c.category_id = fc.category_id 
ORDER BY title"; 
+2

'ВЫБОР СЛУЧАЙ КОГДА LENGTH (цв)> 100 THEN CONCAT (ЛЕВЫЕ (цв, 100), ' (...) ') ELSE col END AS col ... ' – lad2025

+0

Почему случай? 'SELECT LEFT (col, 100) AS col' .... – sagi

+0

@sagi, потому что вы не добавляли многоточие, кроме случаев, когда это необходимо (я бы использовал 97 вместо 100 для CONCAT). – Strawberry

ответ

0

Вы можете использовать функцию подстроки, как показано ниже:

SUBSTRING (ул, пос, длина)

ул: строка, которую вы хотите вырезать. pos: Исходное положение, где вы хотите вырезать. len: Длина символов, до того места, где вам нужно вырезать.

Надеется, что это помогает

SELECT title, 
    CASE 
     WHEN LENGTH(description) > 100 THEN SUBSTRING(description, 1, 100) 
     ELSE description 
    END AS 'description', 
    release_year, 
    rating, 
    f.last_update, 
    c.name 
FROM nfc_film f 
INNER JOIN nfc_film_category fc ON f.film_id = fc.film_id 
INNER JOIN nfc_category c ON c.category_id = fc.category_id 
ORDER BY title; 
+0

Это не сработало – anonymous5671

+0

@ anonymous5671 Каков результат, который вы получаете? –

+0

'Неустранимая ошибка: Не удалось исключить« PDOException »с сообщением« SQLSTATE [HY000]: Общая ошибка: 1 нет такой функции: substring ''Это сообщение об ошибке, которое я получаю – anonymous5671

0

Использованию LEFT и IF функции для достижения этой цели:

SELECT title, 
    CONCAT(LEFT(description,100), 
      IF(length(description) > 100, '...', '')) as description, 
    release_year, rating, f.last_update, c.name FROM nfc_film f 
INNER JOIN nfc_film_category fc ON f.film_id = fc.film_id 
INNER JOIN nfc_category c ON c.category_id = fc.category_id 
ORDER BY title 
+0

это не сработало для меня .. это синтаксическая ошибка? – anonymous5671

+0

Я попробовал еще ту же ошибку синтаксиса 'Uncaught exception 'PDOException' с сообщением 'SQLSTATE [HY000]: Общая ошибка: 1 около " (": синтаксическая ошибка'' – anonymous5671

+0

моя неудачная другая ошибка. Попробуйте еще раз. –