Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / Сравнить 2 строки / 8 сообщений из 8, страница 1 из 1
03.10.2005, 16:55
    #33301825
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить 2 строки
Пишу вот такой Select

Select field1
from table1
where field2='1234567890'

Нужно сравнить 6 первых цифр в обеих полях. Как это сделать?
Использую SubStr(field2,1,6) = Substr('1234567890',1,6)
и все равно
0 raws affected
Хотя такая запись есть и не одна...

ЗЫ Простите за глупый вопрос но мануала под рукой нет.
...
Рейтинг: 0 / 0
03.10.2005, 17:03
    #33301856
Enlighten me
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить 2 строки
структуру table1 покажите - интересует как объявлено field2. Если поле символьное, то
Код: plaintext
select field1 from table1 where field2[ 1 , 6 ] = 'ABCDEF'
должно работать.
...
Рейтинг: 0 / 0
03.10.2005, 17:07
    #33301876
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить 2 строки
:-) если б я еще знал как посмотреть структуру :-) desc table1 тут не катит...
Поле точно символьное в нем есть буквы.

А твоя запись с [1,6] вообще дает ошибку SQL.
Error: sqlerrm(field2) (State:22003, Native Code: FFFFFECE)
...
Рейтинг: 0 / 0
03.10.2005, 17:10
    #33301894
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить 2 строки
Говорит Field2 - Char(19) а константа таки объявлена в кавычках...
...
Рейтинг: 0 / 0
03.10.2005, 17:24
    #33301950
Enlighten me
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить 2 строки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create temp table table1
(
	field1 char( 19 ),
	field2 char( 19 )
) with no log ;

insert into table1 values('record1','ABCDEFGHIJKLM') ;

select field1 from table1 where field2[ 1 , 6 ] = 'ABCDEF' ;
Ещё как работает. IDS 7.31. Да и позже должно работать. Заполни анкету - версия сервера, что за клиент, осы клиента, сервера...
...
Рейтинг: 0 / 0
03.10.2005, 17:49
    #33302034
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить 2 строки
В общем все оказалось просто. Вместо field2 ставил field1 совсем заработался...

А еще несколько глупых вопросов

1) Как сделать цикл вида repeat until (условие) или хотя бы while (условие) do
2) как получить количество строк в select-е после того как он отработал

Спасибо за участие.

informix ODBC 3.34 остальное не знаю.
...
Рейтинг: 0 / 0
03.10.2005, 18:01
    #33302083
Enlighten me
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить 2 строки
1. Полная документация доступна на сервере IBM совершенно бесплатно.
2. Количество записей (dbinfo('sqlca.sqlerrd2')):
Iformix SQL guideThe 'sqlca.sqlerrd2' option returns a single integer that provides the number
of rows that SELECT, INSERT, DELETE, UPDATE, and EXECUTE PROCEDURE
statements processed. To ensure valid results, use this option after SELECT
and EXECUTE PROCEDURE statements have completed executing. In
addition, to ensure valid results when you use this option within cursors,
make sure that all rows are fetched before the cursors are closed.
The following example shows a stored procedure that uses the
'sqlca.sqlerrd2' option to determine the number of rows that are deleted from
a table:
CREATE PROCEDURE del_rows (pnumb int)
RETURNING int;
DEFINE nrows int;
DELETE FROM fst_tab WHERE part_num=pnumb;
LET nrows = DBINFO('sqlca.sqlerrd2');
RETURN nrows;
END PROCEDURE
3. While (ещё есть for и foreach):
Informix SQL guide Example of WHILE Loops in a Stored Procedure
The following example illustrates the use of WHILE loops in a stored
procedure. The first WHILE loop executes a DELETE statement. The second
WHILE loop executes an INSERT statement and increments the value of a
procedure variable.
CREATE PROCEDURE simp_while()
DEFINE i INT;
WHILE EXISTS (SELECT fname FROM customer
WHERE customer_num > 400)
DELETE FROM customer WHERE id_2 = 2;
END WHILE;
LET i = 1;
WHILE i < 10
INSERT INTO tab_2 VALUES (i);
LET i = i + 1;
END WHILE;
END PROCEDURE
...
Рейтинг: 0 / 0
03.10.2005, 18:05
    #33302110
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить 2 строки
Спасибо большое :-) буду копать...
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Сравнить 2 строки / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]