[SQL] Функция, которая сравнивает две строки?
---
...Я работаю антинаучным аферистом...
declare ........
function.......(x[],y[]) IS или по-SQL-ному...не хнаю как...VARCHAR...что ли
begin....
end.......
function("a","ab")---------->FALSE
function("b","b")----------->TRUE
DECLARE
result varchar2(10);
FUNCTION MyFunc(Strike1 VARCHAR2, Strike2 VARCHAR2)
RETURN varchar2 IS
BEGIN
IF(Strike1 = Strike2) THEN
RETURN '1';
ELSE
RETURN '0';
end if;
END;
begin
rezalt := MyFunc('a', 'ab');
dbms_output.put_line(result);
end;
афигеть
Че афигеть? Я и назвал его ламерским вопросом...Кто же спорит, что тебе это легко? А мне нужно было быстренько такую херню написать именно на PL/SQL (SQL я видел 1 раз в жизнитолько что мне сказали, что, оказывается... SQL=Structured Query Language...оставь при себе свои амбиции
почему манагер занимаются прогрммированием? он должн впаривать чего-нибудь кому-нмбудь
Манагер сменил немного работу....а там надо самую малость SQL понимать....что поделаешь
Составление запросов на SQL лично я не считаю программированием, аргументы я приводил уже как-то.
rezalt := 'a' = 'ab';
Зачем обязательно писать такую громоздкую функцию?
rezalt := strike1 = strike2, не спорю - коротко...но ':=' - не всем нравится. IF-THEN, DECODE - наверно, лучше
че бы ты сделал, если бы надо было сравнивать не 2 строки, а 1 слово и ячейки столбца? Если это 1 слово есть хотя бы в 1 строке в столбце таблицы (SELECT Columb_Name FROM Table_Name)- TRUE, нет - False
result = 0 != (select count(*) from Table_Name where Column_Name = 'Искомое слово')
а в теле ф-ции это как выглядит(если не сложно)? Нужно еще чтобы, например, если исходное слово "test", а в единственной строке - "testiruem" - выдавала FALSE
Что эта функция должна брать на входе?
> Нужно еще чтобы, например, если исходное слово "test", а в единственной строке - "testiruem" - выдавала FALSE
Приведенный запрос именно так себя и ведет.
Стормозил!
На входе Strike VARCHAR2(10) и сравнение Strike и (SELECT Columb_Name FROM Table_Name )
FUNCTION MyFunc(Strike VARCHAR2)
RETURN bool IS
BEGIN
return 0 != (select count(*) from Table_Name where Column_Name = Strike);
END;
Subquery not allowed in this context
аналогично
IF(SELECT COUNT(*) FROM Table_Name WHERE Columb_Name = Strike) THEN
RETURN '1';
ELSE
RETURN '0';
END IF;
Ругается именно на SELECT
Не работает!
Когда не работает?
Что при это выдается?
Что должно выдаваться?
ps
Телепаты общаются без форума.
Выдает ошибку "Subquery not allowed in yhis context", PL-SQL 00103 "Encounterd operator "SELECT", line...
т.е. IF(SELECT COUNT(*) FROM Table WHERE Columb=Strike) THEN
RETURN '1';
такой селект нельзя творить
declare @q int
set @q = (select ..)
if (@q != 0)
FUNCTION MyFunc(Strike VARCHAR2)
RETURN VARCHAR IS
BEGIN
SELECT COUNT(*)
INTO s
FROM Table
WHERE Columb = Strike;
IF(s>1) then RETURN '1';
ELSE RETURN '0';
END IF;
END;
Только все-таки больше 0 , а не больше 1.
Оставить комментарий
vladi1
Плиз, напишите код функции в SQL, которая сравнивает 2 строки на входе, TRUE, если они равны, FALSE, если нет...или хотя бы напишите как обьявляется массив символьный в SQL, и как считывать его по символу(что-то вроде getchar там циклик небось какой-нить, наверно)...