Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 18:28 26.06.24 
Компютри и Интернет
   >> Бази данни
*Кратък преглед

Страници по тази тема: 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 | >> (покажи всички)
*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.