|
Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема
|
Other symbols
|
|
Автор |
Ивaнyшka (3-ти царски син) |
Публикувано | 16.09.02 14:50 |
|
Имам едно питане как може да се напише следната SQL заявка
Искам да направя индекс на заглавията на творбите в сайта си по азбучен ред.
Стандартните букви на кирилица и латиница са ми ясно
Но имам една купчина заглавия, които започват със странни символи от типа на:
~, *,-, _, цифри и други такива
Единият вариант е да ги опиша ама не ми хареса особенно.
По скоро ме интересува има ли израз от типа
where first_symbol не е (А-Я) OR (A-Z)
Българската литература
Вече на една година
| |
Тема
|
Re: Other symbols
[re: Ивaнyшka]
|
|
Автор | svircho (Нерегистриран) |
Публикувано | 16.09.02 15:23 |
|
SELECT * FROM mytable
WHERE SUBSTR(column_name,1,1) NOT IN ('~', '*','-', '_','0','1','2','3','4','5','6','7','8','9')
В списъка можеш да си добавиш още специални символи. Това е по-лесния вариант, отколкото да изброиш цялата българска и английска азбука.
Не знам да има вградена функция, най-малкото защото тя ще важи само за латински символи, а и няма да е по-бърза от този SELECT. Освен това списъка няма да е прекалено дълъг и ако си направиш и function-based index за SUBSTR(column_name,1,1) ще стане супер бързо.
| |
Тема
|
Re: Other symbols
[re: Ивaнyшka]
|
|
Автор |
salle (Един такъв) |
Публикувано | 16.09.02 15:24 |
|
В MySQL можеш да използваш BINARY
select .... order by BINARY title;
или да използваш функцията ASCII(str) и примерно да сортираш по първа буква като:
.... order by ASCII(title) ...
| |
Тема
|
Re: Other symbols
[re: svircho]
|
|
Автор |
salle (Един такъв) |
Публикувано | 16.09.02 15:33 |
|
SUBSTR(column_name,1,1) == LEFT(column_name, 1)
От програмистка гледна точка ASCII(column_name) < N е малко по-естетично , но пък твоя вариант с NOT IN() е по-гъвкав.
И пак да добавя, че цялата тази конструкция може да отиде във ORDER BY - нещо, което доста често се забравя
ORDER BY (LEFT(column_name, 1) IN ('~', '*', '-')), column_name;
е едно доста читаво решение поне според мен
| |
Тема
|
Re: Other symbols
[re: salle]
|
|
Автор | svircho (Нерегистриран) |
Публикувано | 16.09.02 15:39 |
|
Има разлика между ORDER BY клауза и WHERE клауза!
Това, че има ORDER BY в един SELECT както ти предлагаш не значи, че ще се премахнат специалните символи от резултата, Ако искаш да изключиш някои записи се използва WHERE!!!
| |
Тема
|
Re: Other symbols
[re: salle]
|
|
Автор | svircho (Нерегистриран) |
Публикувано | 16.09.02 15:43 |
|
Да, няма да се заяждам. Може както ти казваш в MySQL да е така, а доколкото разбрах човека използва тази база.
Аз се занимавам с друга база и там ако искам да махна колони не го пиша в ORDER BY клаузата. Така че твоя отговор сигурно е по-правилен.
| |
Тема
|
Re: Other symbols
[re: svircho]
|
|
Автор | svircho (Нерегистриран) |
Публикувано | 16.09.02 15:46 |
|
Исках да кажа записи не колони: "там ако искам да махна колони не го пиша в ORDER BY клаузата."
| |
Тема
|
Re: Other symbols
[re: svircho]
|
|
Автор |
Ивaнyшka (3-ти царски син) |
Публикувано | 16.09.02 15:47 |
|
Благодаря
това е едно доста добро решение
А ако може и по някакъв начин да се замести списъка с BETWEEN ASC( ) AND ASC (), но не съм сигурен как точно действа ASC() при Unicode fonts
Ще си ги опиша специалните символи, я някой ако измисли някой дето не съм се сетил ще го добавям...
Но въпрса пак си остава - как може да се изключи всичко извън буквите
Българската литература
Вече на една година
| |
Тема
|
Re: Other symbols
[re: Ивaнyшka]
|
|
Автор | svircho (Нерегистриран) |
Публикувано | 16.09.02 15:52 |
|
Да, проблема е в това че каквото и да правиш трябва да описваш или кои да бъдат включени или кои да бъдат изключени от крайния резултат. И тъй като списъка с тези, които не искаш да бъдат включени засега е по-малък това ми се струва по-удачното решение, тъй като ще се правят по-малко сравнения и съответно ще бъде чувствително по-бързо особено в твоя случай, в който доколкото разбирам таблицата е много голяма.
| |
Тема
|
Re: ама аз не исках да се заяждам
[re: svircho]
|
|
Автор |
salle (Един такъв) |
Публикувано | 16.09.02 16:54 |
|
Даже напротив - решения много и всяко едно от тях може да е добро в зависимост от случая
| |
|
Страници по тази тема: 1 | 2 | >> (покажи всички)
|
|
|