SQL все поля с com # (SELECT * FROM) - PullRequest
       9

SQL все поля с com # (SELECT * FROM)

0 голосов
/ 10 сентября 2018

Мне нужно выполнить общий запрос SQL с символом # между каждым полем в результате запроса, чтобы я мог работать в Excel. То есть:

SELECT * FROM EMPLOYEE

РЕЗУЛЬТАТ

NAME#AGE#SALARY#EMAIL 
Bob#59#1700#bob@bob.com   

Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

В Caché вы можете экспортировать данные с помощью портала управления системой.Вы можете прочитать, как вы можете сделать это в документации .enter image description here

0 голосов
/ 10 сентября 2018
SELECT Name + '#' + AGE FROM Employee

Или вам может потребоваться преобразовать некоторые поля, в MSSQL это выглядит так:

SELECT (CONVERT(VARCHAR(255), E.Age) + '#')
FROM Employee E

Если вы не можете указать значения:

DECLARE @tableName VARCHAR(255) = 'Employee'

-- use MAX since this will be a long query
DECLARE @csv VARCHAR(MAX)

-- Create a query containing SELECT CONVERT(varchar(255), COALESCE(columnanme, '')) for all column names, in 1 line
-- COALACE in case a column is null (otherwise result will be 'null'.
SELECT @csv = COALESCE(@csv + 'CONVERT(VARCHAR(255),COALESCE(' + SC.name + ', '''')) + ''#'' + ', '')
FROM sysobjects SO
JOIN syscolumns SC ON SC.id = SO.id
WHERE SO.name = @tableName

-- chop off the last ','
SET @csv = (SELECT LEFT(@csv, LEN(@csv) -1))

SET @csv = 'SELECT ' + @csv + ' FROM ' + @tableName

-- for debugging: 
-- SELECT @csv

-- execute the SQL query
EXEC @csv

Правка для MSSQL, 'EXEC' будет обрезать переменную @csv, если в этом случае вам придется использовать 2 переменные (или больше, если @csv длиннее 2000)

DECLARE @csvPartOne VARCHAR(500) = LEFT(@csv, 500)
DECLARE @csvPartTwo VARCHAR(MAX) = RIGHT(@csv, LEN(@csv) - 500)

-- execute the SQL query
EXEC (@csvPartOne + @csvPartTwo)
...