Как связать значения в sql

#sql

#sql

Вопрос:

Итак, у меня есть фиктивный вопрос для sql. У меня есть product abc и warehouse 1 Как мне сделать, чтобы значение выглядело так: abc-1 Я пытался сделать ‘и’, amp;, но это не сработало. Извините, если это фиктивный вопрос.

Комментарии:

1. Пожалуйста, укажите RDBMS, на которые вы ориентируетесь, добавив соответствующий тег (Oracle, SQL Server, MySQL и т. Д.). Могут быть ответы, в которых используются преимущества языка или функций продукта, которые не поддерживаются повсеместно. Кроме того, пометив его определенной СУБД, ваш вопрос может привлечь внимание людей, которые лучше подходят для ответа на него.

Ответ №1:

Для MySQL или SQL Server вы можете использовать CONCAT функцию. Используйте выражение, подобное этому:

 SELECT CONCAT(t.product,'-',t.warehouse) AS foo
  FROM mytable t
  

Для Oracle вы можете использовать символы двойного канала для конкатенации строк:

 SELECT t.product||'-'||t.warehouse AS foo
  FROM mytable t
  

Для SQL Server у вас также есть возможность использовать оператор для конкатенации строк, если операнды являются строковыми, а не числовыми типами.

Комментарии:

1. Это нормально, но давайте не будем путать новичка, используя псевдоним таблицы без необходимости.

2. … и в чем преимущество при использовании работ и на вышеуказанных платформах?

3. @Элвин Томпсон: оператор не выполняет конкатенацию строк в MySQL, Oracle или Postgres; Это только «работает» в SQL Server. Проблема с CONCAT функцией Oracle заключается в том, что принимает только два аргумента. Чтобы использовать CONCAT в Oracle для выполнения эквивалентных действий, вам потребуется, например CONCAT(CONCAT(t.product,'-'),t.warehouse)

4. Ах! Это имеет смысл. В этом случае это лучший ответ.

Ответ №2:

Вы можете использовать оператор ‘ ‘.

выберите product_name ‘-‘ приведение (номер склада как varchar) как объединенный из таблицы

Комментарии:

1. Вам нужно приведение, если вы начинаете со строки? Искренне не уверен.

2. В приведенном выше примере я предположил, что 1 был сохранен как int или другой числовой тип данных. Если он начинается как символьный тип данных, приведение не требуется.

Ответ №3:

ИСПОЛЬЗУЙТЕ CONCAT(ColumnName, ‘-‘, ColumnName) или вы также можете использовать простой знак , например, ColumnName ‘-‘ ColumnName, но убедитесь, что вы проверяете isnull для каждого столбца при использовании