|
|
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
Доброго времени. Товарищи подскажите, как объединить значения если в одном из случаем есть нулл в таком запросе Код: sql 1. ПС я знаю что если в одном есть нулл то будет нулл... Но все же ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2013, 16:54:28 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
RTFM COALESCE() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2013, 17:04:46 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
Этот фрагмент может быть применен к пустому наборы данных? Если нет, то достаточно заменить null-ы на '' (пустую строку). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2013, 17:11:24 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
miksoft, как ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2013, 17:43:21 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
bboyRALFmiksoft, как ?руками. Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2013, 17:49:47 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
miksoft, Я Вас вероятно первый раз не понял. Этот фрагмент относится так же к пустому набору данных сейчас данные при объединении выглядят так 00:00 | 01:00, либо null. хотя в бд первое условие может быть пустым т.е. |02:00 или наоборот 02:12 | ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2013, 09:51:01 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
bboyRALFЭтот фрагмент относится так же к пустому набору данныхНу тогда придется функцию применить Код: sql 1. скобки только проверьте, мог напутать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2013, 10:29:49 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
miksoft, А так он мне просто " | " при выполнении дает вместо нулл.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2013, 20:48:20 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
bboyRALFmiksoft, А так он мне просто " | " при выполнении дает вместо нулл..А разве не это требовалось? Я понял так, что нужно, чтобы один из NULL-ов не приводил к NULL все выражение в целом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2013, 20:52:51 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
miksoftbboyRALFmiksoft, А так он мне просто " | " при выполнении дает вместо нулл..А разве не это требовалось? Я понял так, что нужно, чтобы один из NULL-ов не приводил к NULL все выражение в целом. Не совсем ))) у меня есть часы работы за дату с 09:00 до 18:00 У меня запрос так и выводит 09:00 | 18:00, но есть случаи когда ПО не записывает 09:00 либо 18:00. Мне нужно такие выводить как" 9:00| " , либо " | 18:00 " вот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2013, 21:24:53 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
bboyRALFесть случаи когда ПО не записывает 09:00 либо 18:00. Мне нужно такие выводить как" 9:00| " , либо " | 18:00 "Тогда мой вариант должен работать. Просто "|" он будет выводить только когда обе стороны NULL, но что делать в таком случае - Вы не написали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2013, 21:40:04 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
miksoftbboyRALFесть случаи когда ПО не записывает 09:00 либо 18:00. Мне нужно такие выводить как" 9:00| " , либо " | 18:00 "Тогда мой вариант должен работать. Просто "|" он будет выводить только когда обе стороны NULL, но что делать в таком случае - Вы не написали. если вообще ничего нету, тогда нулл. Но Ваш вариант. он делает тоже самое что и нулл получается, потому что если одно значение из сторон нулл, то в итоге я нулл и получаю. А я же хочу чтобы он выводил 9:00 | NULL, чтобы понять за какие даты ПО не записало инф ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2013, 22:13:07 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
bboyRALFвыводить как" 9:00| "bboyRALFхочу чтобы он выводил 9:00 | NULLВы уж определитесь, пожалуйста. Для второго варианта будет так: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2013, 22:16:25 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
miksoft, что-то совсем не получается, ifnull это подобие case ? Может вся проблема в конкат ? при объединении 0 и 1 будет всегда 0. Тогда как мне их объеденить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2013, 17:18:26 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
Мы друг друга не понимаем. Приведите пример исходных данных с разными вариациями NULL/не-NULL и покажите конкретный результат, который нужно получить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2013, 17:31:49 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
bboyRALFпри объединении 0 и 1 будет всегда 0.Нет, будет '01'. http://sqlfiddle.com/#!2/d41d8/27028 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2013, 17:34:00 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
bboyRALFifnull это подобие case ?Нет, это COALESCE для ОДНОГО значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2013, 17:35:39 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
miksoftМы друг друга не понимаем. Приведите пример исходных данных с разными вариациями NULL/не-NULL и покажите конкретный результат, который нужно получить. Иванова Иван 08:46|14:03 Петров Петр NULL <- вот здесь должно быть 07:30 | nul сейчас такой запрос Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2013, 17:36:29 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
bboyRALFПетров Петр NULL <- вот здесь должно быть 07:30 | nulоткуда тут возмется 07:30, если в исходных данных их нет? И разбейте ваш пример на поля. Сейчас невозможно понять, где начинается одно поле и начинается другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2013, 17:41:58 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
AkinabboyRALFifnull это подобие case ?Нет, это COALESCE для ОДНОГО значения.Точнее, для двух. Записать можно и через CASE, но получится заметно длиннее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2013, 17:44:24 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
miksoft, Код: plaintext 1. так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2013, 17:47:45 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
bboyRALFmiksoft, Код: plaintext 1. Отдельно покажите пример исходных данных и отдельно результат. Я не понимаю ваши стрелки и т.п. И желательно воспользоваться тегом CSV (кнопка Table). Примерно так: FIO TIME_START TIME_ENDИванова Иван 08:4614:03Петров Петр ?????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2013, 17:51:10 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
miksoft, исходные данные 08.11.2013 \ 07:58\Ivanov \ Приветствие 08.11.2013 \ 11:46\Ivanov \ Блокировка 08.11.2013 \ 12:14\Ivanov \ Разблокировка 08.11.2013 \ 17:00\Ivanov \ Завершение работы name 01.ноя 05.нояИванов Александр 07:48|16:47 07:50|17:01Кулик Анастасия 09:09|19:26 09:06|18:30Петренко Виктория 08:59|18:00 08:45|18:13Иванов Иван 08:46|14:03 08:35|18:00Петренко Петр NULL 07:30|17:00Ухов Сергей 08:52|20:51 NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2013, 18:05:40 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
miksoftТочнее, для двух.Формально да. Но крайне редко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2013, 18:09:13 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
AkinamiksoftТочнее, для двух.Формально да. Но крайне редко.Что значит "крайне редко" ? У IFNULL всегда ровно два параметра. И IFNULL(A,B) эквивалентно COALESCE(A,B). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2013, 18:25:40 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
Да я ж не против. Я о том, что в подавляющем большинстве случаев использования IFNULL()второй параметр - литерал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2013, 18:44:37 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
Так мне писать запрос через COALESCE ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2013, 22:43:28 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
bboyRALFТак мне писать запрос через COALESCE ??? IFNULL - это формально просто обёртка для COALESCE в случае ровно двух аргументов. Думай сам. Я в своё время выбрал не-использование IFNULL, и другим советую того же. Всё, что можно сделать с помощью IFNULL, можно сделать и с помощью COALESCE. Но не наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2013, 23:47:38 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
AkinabboyRALFТак мне писать запрос через COALESCE ??? IFNULL - это формально просто обёртка для COALESCE в случае ровно двух аргументов. Думай сам. Я в своё время выбрал не-использование IFNULL, и другим советую того же. Всё, что можно сделать с помощью IFNULL, можно сделать и с помощью COALESCE. Но не наоборот. В общем понятно, что ничего не понятно... Буду писать приложение, которое будет сцеплять строки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2013, 10:30:25 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
В общем. Возвращаюсь все к тому же товарищи. Проблема здесь из-за того что данные должны быть равны, поэтому вывод значений идет только при равестве( если есть пустой, то конкатенация не происходит) Код: sql 1. Умы человечества, подскажите... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2014, 13:26:43 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
bboyRALFВ общем. Возвращаюсь все к тому же товарищи. Проблема здесь из-за того что данные должны быть равны, поэтому вывод значений идет только при равестве( если есть пустой, то конкатенация не происходит) Код: sql 1. Умы человечества, подскажите... как объединять даже если данные не равны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2014, 13:42:23 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
bboyRALF, соединение строки и значения NULL всегда дает NULL. непонятно, зачем у вас вот это IF(tex.date = '03.02.2014',TIME_FORMAT(tex.time,'%H:%i'),null) так вы будете всегда получать NULL на всем выражении, если tex.date не '03.02.2014'. Смысл? если вам нужны данные только за 03.02.2014, можно просто поставить это условие в WHERE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2014, 18:37:12 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
VFl, Нет не только за 3 число, такой же запрос на каждые будни февраля месяца, т.е. 4-5...28 число, а как быть если в tex.time есть данные, а в off.time нету ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2014, 02:25:14 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
VFlсоединение строки и значения NULL всегда дает NULL.Не всегда. http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat-ws CONCAT_WS() does not skip empty strings. However, it does skip any NULL values after the separator argument. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2014, 04:28:44 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
bboyRALFкак быть если в tex.time есть данные, а в off.time нету ? IFNULL(TIME_FORMAT(tex.time,'%H:%i'), 'NULL' ), если вы хотите получить результат в виде NULL|02:00 или 02:12|NULL Тогда NULL будет просто записан строкой. или сделать IFNULL(TIME_FORMAT(tex.time,'%H:%i'), '' ) если вы хотите получить результат в виде |02:00 или 02:12| или, например, IFNULL(TIME_FORMAT(tex.time,'%H:%i'), 'пусто' ) Тогда в результате будет пусто|02:00 и 02:12|пусто Опс, возникнут проблемы с MAX() функциями, если IFNULL() будет подменять время на текст. Я не знаю весь SELECT, который у вас, но если есть группировка, и MAX() сильно нужен, то должно работать и так: Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2014, 05:08:21 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
Наверно, так точнее: Код: sql 1. 2. 3. miksoftVFlсоединение строки и значения NULL всегда дает NULL.Не всегда. http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat-ws CONCAT_WS() does not skip empty strings. However, it does skip any NULL values after the separator argument. Cоединение строки и значения NULL всегда дает NULL. Это стандарт SQL. NULL в SQL понимается как "не знаю, что там". Если вы к любому значению прибавите "не знаю что", то и получится "не знаю что", т.е. NULL. Функция CONCAT_WS() игнорирует/перепрыгивает значения NULL, а не соединяет их со строкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2014, 05:19:46 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
VFlНаверно, так точнее: Код: sql 1. 2. 3. miksoftпропущено... Не всегда. пропущено... Cоединение строки и значения NULL всегда дает NULL. Это стандарт SQL. NULL в SQL понимается как "не знаю, что там". Если вы к любому значению прибавите "не знаю что", то и получится "не знаю что", т.е. NULL. Функция CONCAT_WS() игнорирует/перепрыгивает значения NULL, а не соединяет их со строкой.Кэп, как раз вас нам и не хватало Я бы всё-таки постарался выяснить, что именно надо ТСу, что он хотел сказать вот этим: bboyRALFданные должны быть равны, поэтому вывод значений идет только при равестве( если есть пустой, то конкатенация не происходит)Может, ему как раз и надо "перепрыгивание нуллов". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2014, 07:12:06 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
В общем, без исходных данных, текста запроса, результата выполнения этого же запроса на этих же данных, и внятного объяснения, почему результат следует считать неправильным, ситуация тупиковая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2014, 09:03:40 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
и пожалуйста, не постите скриншоты, только текстом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2014, 09:04:43 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. набор данных таблица tex date time comp status03.02.2014 07:09KR Приветствие04.02.2014 07:19KR Приветствие04.02.2014 15:50KR Завершение работы05.02.2014 14:16KR Блокировка (это примерные данные) из-за таких данных я получу в норм виде только за 4.02, а за 3.02 и за 5.02 я получу просто null в итоге запрос выдает name03.0204.0205.02Иванова Машаnull07:19|15:50null, хотя! 3.02 и 5.02 есть зафиксированная информация и мне нужно чтобы он выводил так name03.0204.0205.02Иванова Маша07:09|null07:19|15:50null|14:16 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2014, 11:11:22 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
bboyRALF, замените в своих конкатах null на 'null'. В принципе это будет код из последнего поста VFI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2014, 11:17:39 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
PS. А что должно выдаваться при отсутствии каких бы то ни было данных за день? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2014, 11:18:41 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
И вообще, что мешает сделать, не N колонок, а 2N - старт+стоп? И туда выбирать уже труЪ нуллы, если таковые появятся? Зачем это пропихивание нуллов в строки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2014, 11:20:11 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
tanglirИ вообще, что мешает сделать, не N колонок, а 2N - старт+стоп? И туда выбирать уже труЪ нуллы, если таковые появятся? Зачем это пропихивание нуллов в строки? не совсем Вас понял.. По поводу если будут отсутствовать данные за день, то просто null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2014, 11:36:47 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
bboyRALFне совсем Вас понялВот так нельзя сделать? И не морочить голову с конкатами. name03.02-start03.02-stop04.02-start04.02-stop05.02-start0.02-stopИванова Маша07:09null07:1915:50null14:16 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2014, 12:45:35 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
tanglir, Да я тоже за такой вид изначально был ) Но руководство понимает лучше меня. ) поэтому без конкатенации ни как.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2014, 12:47:39 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
bboyRALF, ну тогда смотри выше, например, последний пост VFI, только туда ещё надо условие добавить, чтобы получилось что-то вроде Код: sql 1. в общем, то ещё мракобесие получится. Зато "красиво", ага. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2014, 12:55:09 |
|
||
|
Конкатенация с NULL
|
|||
|---|---|---|---|
|
#18+
bboyRALF, вместо Код: sql 1. 2. 3. 4. лучше наверно как то так: Код: sql 1. 2. 3. 4. 5. 6. потому что если данных по Маше Ивановой для "Завершения" или "Блокировки" по какой то дате нет, то у вас оно и "Разблокировку" с "Приветствием" не покажет. Думается так. Синтакс надо проверить, писал без проверки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2014, 18:18:39 |
|
||
|
|

start [/forum/topic.php?all=1&fid=47&tid=1835153]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 325ms |

| 0 / 0 |
