|
Тема |
Сравняване на стрингове в Interbase |
|
Автор |
VladoVasilev (минаващ) |
|
Публикувано | 02.06.05 09:53 |
|
|
Може би съм тръгнал в грешна насока, затова първо ще опишя проблема.
Ползвам база Interbase и искам заявка която взима от дадена таблица поле NAME VARCHAR(10). В таблицата има и поле CODE VARCHAR (6). Заявката е следната:
SELECT NAME FROM MYTABLE WHERE CODE LIKE "PARAMETUR%". Значи трябва да SELECT-на всички записи, на които полето код ЗАПОЧВА с подниза PARAMETUR. Нека в MyTable има два записа - единия с CODE="123", а другия с CODE="123/1". Тогава заявката SELECT NAME FROM MYTABLE WHERE CODE LIKE "123%" ми връща и двата записа, но ПЪРВИ е този с CODE="123/1", а на мен ми трябва точно обратното-първо да бъдат най-точните съвпадения. Мисля че ако има начин да допълня заявката с нещо от рода на ORDER BY LENGHT(CODE) ASC ще се получи желания ефект. Проблема е че в Interbase не мога да намеря ф-ция която срявнява дължината на два стринга - вариант е да си напиша съответния UDF, но ми се струва нереално да няма нещо готово. И второ - някой знае ли по-добър начин избраните записи да се подреждат по дължината на полето CODE в нарастващ ред? Може би има начин да се промени малко таблицата, с която INTERBASE сравнява символите?
|
| |
|
|
|