Я пытаюсь выполнить запрос, в котором я объединяю два столбца и разделяю их с помощью Икс между ними.
Я также пытаюсь получить некоторые другие столбцы из той же таблицы. Однако я получаю следующую ошибку.
Error: No matching signature for function CONCAT for argument types: FLOAT64, FLOAT64. Supported signatures: CONCAT(STRING, [STRING, ...]); CONCAT(BYTES, [BYTES, ...]).
Вот мой код:
SELECT
CONCAT(right,'x',left),
position,
numbercreated,
Madefrom
FROM
table
WHERE
Date = "2018-10-07%"
Я пытался также поставить бросок раньше, но это не сработало.
SELECT Concast(cast(right,'x',left)), position,...
SELECT Concast(cast(right,'x',left)as STRING), position,...
Почему я получаю эту ошибку? Есть ли исправления? Спасибо за помощь.
Попробуйте, как показано ниже, используя safe_cast
:
SELECT
CONCAT(SAFE_CAST( right as string ),'x',SAFE_CAST(left as string)),
position,
numbercreated,
Madefrom
FROM
table
WHERE
Date = '2018-10-07'
Вам нужно привести каждое значение до к concat()
:
SELECT CONCAT(CAST(right as string), 'x', CAST(left as string)),
position, numbercreated, Madefrom
FROM table
WHERE Date = '2018-10-07%';
Если вам нужен определенный формат, используйте функцию FORMAT()
.
Я также сомневаюсь, что ваш WHERE
будет соответствовать чему-либо. Если Date
— это строка, то вы, вероятно, хотите LIKE
:
WHERE Date LIKE '2018-10-07%';
Скорее всего, вам следует использовать функцию DATE
или прямое сравнение:
WHERE DATE(Date) = '2018-10-07'
или:
WHERE Date >= '2018-10-07' AND
Date < '2018-10-08'
Другой вариант решения вашей проблемы с CONCAT — использовать функцию FROMAT, как в примере ниже.
#standardSQL
WITH `project.dataset.table` AS (
SELECT 1.01 AS `right`, 2.0 AS `left`
)
SELECT FORMAT('%g%s%g', t.right, 'x', t.left)
FROM `project.dataset.table` t
результат будет
Row f0_
1 1.01x2
Примечание: в приведенном выше конкретном примере вы можете использовать еще более простой оператор
FORMAT('%gx%g', t.right, t.left)
Вы можете увидеть больше для поддержки форматы
Несколько рекомендаций - старайтесь не использовать ключевые слова в качестве имен/псевдонимов столбцов. Если по какой-то причине вы используете - оберните его обратной галочкой или префиксом с именем/псевдонимом таблицы
Еще один комментарий - похоже, вы поменяли местами свои значения - ваш правый находится слева, а левый - справа - может быть именно то, что вам нужно, но хотел упомянуть
Спасибо. Решил проблему!