powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Between и not is null
4 сообщений из 4, страница 1 из 1
Between и not is null
    #38611542
VilliBoms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
SELECT if(CURTIME() between '09:00:00' AND '21:00:00', 1, 0)


подскажите как мне потправить данные код, если время не задано выдавало к примеру 2, т.е. нужна еще проверка на не пустое значение:
Пример:
Код: plsql
1.
SELECT if(CURTIME() between '' AND '21:00:00', 1, 0)


должно выдать 2
...
Рейтинг: 0 / 0
Between и not is null
    #38611590
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VilliBoms,

CASE ?
...
Рейтинг: 0 / 0
Between и not is null
    #38611696
VilliBoms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,
примерчик не покажите?
...
Рейтинг: 0 / 0
Between и not is null
    #38614377
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VilliBoms
Код: plsql
1.
SELECT if(CURTIME() between '09:00:00' AND '21:00:00', 1, 0)


подскажите как мне потправить данные код, если время не задано выдавало к примеру 2, т.е. нужна еще проверка на не пустое значение:
Пример:
Код: plsql
1.
SELECT if(CURTIME() between '' AND '21:00:00', 1, 0)


должно выдать 2

это как вы себе представляете, в запросе либо задано время либо нет, если девять часов подставляеться как %парам
можно конечно

Код: sql
1.
if(%param is null OR %param='',2,if(CURTIME() between '09:00:00' AND '21:00:00', 1, 0))


Но это слегка глупо, если это запрос формируемый на другом языке, так там и расматривать вариант заданости времени и посылать один из двух запросов. если это в коде хранимой процедуры, то лучше ити по старинке, сначала проверить входные значения, потом опять же делать тот запрос, который нужен для входных значений.

вот пример одного такого кода
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
proc_start:BEGIN
DECLARE iSchema, iTable VARCHAR(64);
DECLARE i INT;

IF iString = '*' OR iString = '*.*' OR iString = '*.' OR iString = '.*' OR iString = '.' THEN

	SELECT  `table_schema`,`table_name`, `table_rows`, `data_length`, `index_length`,  `auto_increment` 
	FROM `information_schema`.`tables` 
	WHERE table_schema <> 'mysql' AND table_schema <> 'information_schema' AND table_type='BASE TABLE'
	ORDER BY `table_schema`,`table_rows` DESC;

ELSEIF iString = '' THEN	
	SELECT 'use db.table or db.* *.table or *.* (the same *)' as 'INFO';
	
ELSE
	SET i = LOCATE('.',iString);
	
	IF i = 0 THEN	
		SET iSchema = iString;
		SET iTable = '*';
	ELSE
		SET iSchema = SUBSTRING(iString,1,LOCATE('.',iString)-1);
		SET iTable = SUBSTRING(iString,LOCATE('.',iString)+1);
	END IF;
	
	IF iSchema = '' THEN SET iSchema = '*'; END IF;	
	IF iTable = '' THEN SET iTable = '*'; END IF;
	
	IF iSchema = '*' AND iTable = '*' THEN	
		SELECT  `table_schema`,`table_name`, `table_rows`, `data_length`, `index_length`,  `auto_increment` 
		FROM `information_schema`.`tables` 
		WHERE table_schema <> 'mysql' AND table_schema <> 'information_schema' AND table_type='BASE TABLE'
		ORDER BY `table_schema`,`table_rows` DESC;	
	
	ELSEIF iSchema <> '*' AND iTable <> '*' THEN
		SELECT  `table_schema`,`table_name`, `table_rows`, `data_length`, `index_length`,  `auto_increment` 
		FROM `information_schema`.`tables` 
		WHERE table_schema = iSchema AND table_name = iTable
		ORDER BY `table_schema`,`table_rows` DESC;	
	
	ELSEIF iSchema <> '*' THEN
		SELECT  `table_schema`,`table_name`, `table_rows`, `data_length`, `index_length`,  `auto_increment` 
		FROM `information_schema`.`tables` 
		WHERE table_schema = iSchema AND table_type='BASE TABLE'
		ORDER BY `table_schema`,`table_rows` DESC;
	
	ELSEIF iTable <> '*' THEN
		SELECT  `table_schema`,`table_name`, `table_rows`, `data_length`, `index_length`,  `auto_increment` 
		FROM `information_schema`.`tables` 
		WHERE table_schema <> 'mysql' AND table_schema <> 'information_schema' AND table_name = iTable
		ORDER BY `table_schema`,`table_rows` DESC;
	
	ELSE	
		SELECT CONCAT(@iString,' is bad argument','use db.table or db.* or *.* (the same *)') as 'ERROR';
	
	END IF;
	
END IF;

END


ситуация похожа на вашу, у вас левая и правая граница даты, у меня имя базы имя таблицы, притом что любое может быть не задано.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Between и not is null
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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