Форум: "Базы";
Текущий архив: 2009.03.15;
Скачать: [xml.tar.bz2];
ВнизПоиск символа из масcива в строке Найти похожие ветки
← →
DelphiN! (2008-07-22 13:08) [0]Нужно написать запрос, который выводил все записи, в которых встречается какой либо символ из английского и русского алфавита, как можно это сделать?
Нужно что-то похожее наselect * from table where field1 in ["A.."z"]
← →
Dizzel (2008-07-22 13:11) [1]Вернее
select * from table where ["A.."z"] in field1
← →
DelphiN! (2008-07-22 13:11) [2]
> Dizzel (22.07.08 13:11) [1]
Это я ...
← →
turbouser © (2008-07-22 13:23) [3]
> DelphiN!
ХП + substring
← →
stas © (2008-07-22 13:24) [4]В MS SQL можно так: field1 like "%[А-Я]%"
← →
DelphiN! (2008-07-22 13:46) [5]
> stas © (22.07.08 13:24) [4]
В FireBird 2.1 так не работает
> turbouser © (22.07.08 13:23) [3]
А без хранимых процедур никак?
← →
turbouser © (2008-07-22 13:51) [6]
> DelphiN! (22.07.08 13:46) [5]
> А без хранимых процедур никак?
case -ом :)
← →
turbouser © (2008-07-22 13:53) [7]
> DelphiN! (22.07.08 13:46) [5]
Лови...
CREATE PROCEDURE EN_RU (
s varchar(50) character set cyrl)
returns (
idx integer)
as
declare variable i integer;
declare variable ch char(1) character set cyrl;
declare variable en varchar(30);
declare variable ru varchar(34);
begin
EN="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
RU="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
I=1;
while (i<=strlen(:S)) do
begin
Ch = substring(:S from :i for 1);
if ((:EN containing :Ch) or (:RU containing :Ch)) then
begin
IDX=:I;
break;
end
I=:I+1;
end
suspend;
end
← →
Правильный$Вася (2008-07-22 14:00) [8]UDF сделай
← →
DelphiN! (2008-07-22 14:55) [9]
> turbouser © (22.07.08 13:53) [7]
>
> Лови...
Спасибо!
А можно ли проверить число ли в строке или нет? Только без ХП
← →
PEAKTOP © (2008-07-22 14:59) [10]можно еще
SELECT T1.*
FROM table1 T1
WHERE (T1.FIELD1 SIMILAR TO "[A-z]")
OR (T1.FIELD1 SIMILAR TO "[А-я]")
Но для использования нужен Firebird не ниже версии 2.5.0.20343
← →
PEAKTOP © (2008-07-22 15:01) [11]> А можно ли проверить число ли в строке или нет? Только без ХП
Аналогично
SELECT T1.*
FROM table1 T1
WHERE (T1.FIELD1 SIMILAR TO "[0-9]")
← →
turbouser © (2008-07-22 15:02) [12]
> DelphiN! (22.07.08 14:55) [9]
См. [8]
← →
turbouser © (2008-07-22 15:02) [13]
> PEAKTOP ©
2.5 еще альфа совсем...
← →
Сергей М. © (2008-07-22 16:51) [14]
> можно ли проверить число ли в строке или нет?
Можно, если ты понимаешь, что такое "число в строке")
← →
Правильный$Вася (2008-07-22 17:29) [15]
> А можно ли проверить число ли в строке или нет?
"abcd345efg" LIKE "%345%"
← →
stas © (2008-07-22 17:34) [16]Правильный$Вася (22.07.08 17:29) [15]
не он хочет узнать есть ли в строке abcd345efg число
← →
Правильный$Вася (2008-07-22 18:46) [17]
> stas © (22.07.08 17:34) [16]
если число конкретное, то [15]
если узнать, а вообще число ли оно, то CAST
← →
Loginov Dmitry © (2008-07-23 00:02) [18]> А можно ли проверить число ли в строке или нет? Только без
> ХП
EXECUTE BLOCK. Аналог ХП, но можно задавать как и любой SELECT-запрос в компоненте TIBDataSet. Поддерживается с версии 2.0. Хороший пример есть в статье РЕАКТОРА "Firebird 2.0 на полную катушку".
← →
DelphiN! (2008-07-23 10:03) [19]Спасибо все за советы!
Так как используется FB ниже 2.5 придётся использовать ХП ...
BEGIN
USERTYPE = "MEMBER";
NUM="0123456789";
I=1;
Ch = "/";
while ((ch <> "")and(usertype = "MEMBER")) do
begin
Ch = substring(:S from :i for 1);
if ((:NUM containing :Ch)) then
begin
USERTYPE = "NUM";
break;
end
I=:I+1;
end
suspend;
END
В FB 2.1 данная процедура работает хорошо, но при попытки использования ее в FB 1.5.1 ругается на строку Ch = substring(:S from :i for 1);. Какой есть аналог функции для FB 1.5?
Вот ошибка :
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 16, column 25.
:.
← →
DelphiN! (2008-07-23 10:16) [20]Если я заменяю :i на статическое число, то все работает, как решить это проблему?
Ch = substring(:S from :i for 1);
на
Ch = substring(:S from 1 for 1);
← →
Правильный$Вася (2008-07-23 11:10) [21]
> Какой есть аналог функции для FB 1.5?
подключи UDF, в твоей версии неттакой встроенной функции, но есть в стандартном списке UDF
при этом понимает параметры-переменные
← →
DelphiN! (2008-07-23 11:43) [22]
> Правильный$Вася (23.07.08 11:10) [21]
А как подключить UDF?
← →
DelphiN! (2008-07-23 11:57) [23]В смысле какое описание должно быть у "правильной" substring?
← →
Правильный$Вася (2008-07-23 13:00) [24]
> В смысле какое описание должно быть у "правильной" substring?
в справке по IB6 написано
← →
Loginov Dmitry © (2008-07-23 22:27) [25]> В FB 2.1 данная процедура работает хорошо, но при попытки
> использования ее в FB 1.5.1 ругается на строку Ch = substring(:
> S from :i for 1);. Какой есть аналог функции для FB 1.5?
Так тыж FB 2.1 используешь (см [5]). К чему тогда о проблемах с FB 1.5 спрашивать?
← →
DelphiN! (2008-07-24 04:42) [26]
> Loginov Dmitry © (23.07.08 22:27) [25]
> DelphiN! (23.07.08 10:03) [19]
> В FB 2.1 данная процедура работает хорошо, но при попытки
> использования ее в FB 1.5.1 ругается на строку
Основная версия FB в компании 2.1, однако на некоторых серверах еще осталась 1.5.1 ...
← →
DelphiN! (2008-07-24 04:54) [27]
> Правильный$Вася (23.07.08 13:00) [24]
>
> в справке по IB6 написано
Не могу найти :(
← →
turbouser © (2008-07-24 08:36) [28]
> DelphiN! (23.07.08 11:57) [23]
см. \program files\firebird\udf\ib_udf.sql
выполняешь скрипт - будет в базе функцияsubstr
и еще много чего полезного :)
← →
Виталий Панасенко(дом) (2008-07-24 08:43) [29]Найди RFUNC - там все есть, DLL скрипты на подключение/отключение UDF. Бесплатная библиотека
← →
DelphiN! (2008-07-24 12:04) [30]
> turbouser © (24.07.08 08:36) [28]
>
> см. \program files\firebird\udf\ib_udf.sql
> выполняешь скрипт - будет в базе функция substr
> и еще много чего полезного :)
Заработало!!!
Огромное спасибо всем за помощь!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2009.03.15;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.045 c