powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / CONCAT()
20 сообщений из 20, страница 1 из 1
CONCAT()
    #36106482
Igornew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, дошёл уже до белого каления
1.
Код: plaintext
select CONCAT('одна текстовая дрянь',',','ещё одна такая же');
имеем
одна текстовая дрянь,ещё одна такая же

2.
Код: plaintext
1.
2.
a.name1='одна текстовая дрянь'
a.name2='ещё одна такая же'
select CONCAT(a.name1,',',a.name2);
имеем
одна текстовая дрянь,ещё одна такая же

3.
Код: plaintext
1.
2.
SELECT IFNULL((SELECT `name` FROM zastreet WHERE zastreet.id= 32 ),'Ля-Ля') INTO @numst;
SELECT  @numst;
имеем результат поиска по таблице
г.Москва

а вот
Код: plaintext
select CONCAT(@numst,',',@numst);
ну вот хоть умри, всё равно
г.Москва

а не
г.Москва,г.Москва
...
Рейтинг: 0 / 0
CONCAT()
    #36106492
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igornew
Код: plaintext
a.name1='одна текстовая дрянь'
это какой язык?
...
Рейтинг: 0 / 0
CONCAT()
    #36106665
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
root.test>set @a:='епрст';
Query OK,  0  rows affected ( 0 . 00  sec)

root.test>select concat(@a,',',@a);
+-------------------+
| concat(@a,',',@a) |
+-------------------+
| епрст,епрст       |
+-------------------+
 1  row in set ( 0 . 00  sec)

root.test>set @a='12';
Query OK,  0  rows affected ( 0 . 00  sec)

root.test>select concat(@a,',',@a);
+-------------------+
| concat(@a,',',@a) |
+-------------------+
|  12 , 12              |
+-------------------+
 1  row in set ( 0 . 00  sec)
...
Рейтинг: 0 / 0
CONCAT()
    #36106715
Igornew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Да это никакой язык, просто показал, что при слиянии полей таблицы, тоже всё работает правильно, а вот третий вариант ни как
...
Рейтинг: 0 / 0
CONCAT()
    #36106719
Igornew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov,
Да это всё понятно, это работает, а третий вариант, когда переменная получена в результате выражения, вариант 3 -нет
...
Рейтинг: 0 / 0
CONCAT()
    #36106738
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
root.test>select  5  into @a;
root.kvpl>select @a;
+------+
| @a   |
+------+
|  5     |
+------+
root.test>select concat(@a,',',@a);
+-------------------+
| concat(@a,',',@a) |
+-------------------+
|  5 , 5                |
+-------------------+
...
Рейтинг: 0 / 0
CONCAT()
    #36106951
MAPA3OT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сдаётся мне, что правильный ответ - "потому что гладиолус". Скопируйте (только целиком, без своих дополнений) и выполните это:
Код: plaintext
1.
2.
SELECT @numst:=(SELECT `name` FROM zastreet WHERE zastreet.id= 32 );
SELECT CONCAT(@numst,',',@numst);
...
Рейтинг: 0 / 0
CONCAT()
    #36107732
Igornew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MAPA3OT,

Скопировал один к одному.
Результат, тот же.
На выходе только один повтор значения @numst. Так, что может и гладиолус, но воз и ныне там.
Сдаётся мне, что есть попытка вывести 2 повтора, но он даёт пробелами, потому что замечал, что поле вывода вроде расширяется, если в середину к среднему выражению добавить символов по длине.
Кстати
Код: plaintext
1.
SELECT @numst:=(SELECT `name` FROM zastreet WHERE zastreet.id= 32 );
SELECT CONCAT(@numst,',', '111111111');
значения
Код: plaintext
', ', '111111111'
так же не выводит, а дает только г.Москва

а запрос
Код: plaintext
1.
SELECT @numst:=(SELECT `name` FROM zastreet WHERE zastreet.id= 32 );
SELECT CONCAT('111111111',', ',@numst);
выводит
Код: plaintext
 111111111 , г.Москва
вот такой вот прикол :(
...
Рейтинг: 0 / 0
CONCAT()
    #36107789
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а покажите результат
Код: plaintext
SELECT HEX(`name`) FROM zastreet WHERE zastreet.id= 32 
...
Рейтинг: 0 / 0
CONCAT()
    #36107814
Igornew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
результат
Код: plaintext
CD2E20C1EEF7E0F0EEE2EAE00D
но собственно там была и не Москва, я её для примера, на самом деле Н. Бочаровка
...
Рейтинг: 0 / 0
CONCAT()
    #36107852
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а 0D на конце откуда?
имхо, это все из-за него.
...
Рейтинг: 0 / 0
CONCAT()
    #36107955
Igornew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
Да, конечно, спасибо большое
видимо при переносе с другой базы добавились 'OD' к концам тестовых строк
Сделал

Код: plaintext
UPDATE zastreet SET NAME=REPLACE(NAME,CHAR( 13 ),'');

после этого всё заработало :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
CONCAT()
    #39287629
Alexey_Ko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья, добрый день.
Помогите решить проблему с кодом.
Нужно составить UPDATE в цикле while.
Цикл работает, а вот запрос нет. Ругается на строку ... UPDATE ps_data1 SET concat('ps_abk_ch',@p) = @x;
Не нравится concat('ps_abk_ch',@p), это и понятно, но как сделать?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
begin 
                SET @dat = (select gpes  from ps_data) ;
                set @p := 1;

    while @p<81 do 
                               
                                 SET @x = (select concat('ps_abk_ch',@p) from ps_data) ;  
                                 SET @a = (select concat('ps_abk_ch',@p) from ps_data1) ;

                              if ( @x !=  @a) then
                                       insert ps_log set ocher =  @x, ps_name='АБК',ps_ch = concat( 'Датчик № ',@p) ,ps_shtamp =  @dat ;
                                        UPDATE   ps_data1 SET concat('ps_abk_ch',@p) = @x;
                             end if;

         set @p:=@p+1;
    end while;

end
...
Рейтинг: 0 / 0
CONCAT()
    #39287634
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey_Ko,

а какую строку хочешь получить в итоге?
Просто чистый update... напиши для примера
...
Рейтинг: 0 / 0
CONCAT()
    #39287635
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторUPDATE ps_data1 SET concat('ps_abk_ch',@p) = @x;если хочешь образовать имя поля - надо использовать prepare statement, см ссылку http://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html mysql> USE test;
mysql> CREATE TABLE t1 (a INT NOT NULL);
mysql> INSERT INTO t1 VALUES (4), (8), (11), (32), (80);

mysql> SET @table = 't1';
mysql> SET @s = CONCAT('SELECT * FROM ', @table);

mysql> PREPARE stmt3 FROM @s;
mysql> EXECUTE stmt3;
и здесь тоже
select concat('ps_abk_ch',@p) from ps_data - результатом будет константа "ps_abk_ch1" а не значение этого поля
...
Рейтинг: 0 / 0
CONCAT()
    #39287641
Alexey_Ko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне и надо как текст получить "ps_abk_ch1"
В запросе "SET @x = (select concat('ps_abk_ch',@p) from ps_data) ;" - все работает.
А вот в UPDATE ps_data1 SET concat('ps_abk_ch',@p) = @x; - выдает ошибку.
...
Рейтинг: 0 / 0
CONCAT()
    #39287642
Alexey_Ko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что бы не писать громадный код. Я пытаюсь все в цикле сделать.
Данные из таблиц читаю (методом сложения текста и числа)
Код: sql
1.
SET @x = (select concat('ps_abk_ch',@p) from ps_data) ;  


Метод insert - тоже отрабатывает.
А вот UPDATE, требует четкого синтаксиса до "=". После присваивания, можно хоть "горбатого" ставить, а вот как обмануть имя столбца?
В РНР это легко, а вот на SQL, да еще и в триггере, это вопрос.
...
Рейтинг: 0 / 0
CONCAT()
    #39287645
Alexey_Ko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_UstinovAlexey_Ko,

а какую строку хочешь получить в итоге?
Просто чистый update... напиши для примера
Мне нудно получить
Код: sql
1.
   UPDATE   ps_data1 SET ps_abk_ch1  = @x;

где ps_abk_ch1, ps_abk_ch2, и т.д
...
Рейтинг: 0 / 0
CONCAT()
    #39287659
Alexey_Ko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы правы -туплю.
...
Рейтинг: 0 / 0
CONCAT()
    #39288029
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey_KoВ запросе "SET @x = (select concat('ps_abk_ch',@p) from ps_data) ;" - все работает.Ага, работает. Исключительно потому, что в таблице ps_data ровно одна строка. Да и результат выдаёт явно не тот, который тебе нужен.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / CONCAT()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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