SQL com # (SELECT * FROM) 的所有字段
SQL all fields with com # (SELECT * FROM)
我需要 运行 一个通用 SQL
查询,在查询结果的每个字段之间使用字符 #,以便我可以在 Excel
中使用。即:
SELECT * FROM EMPLOYEE
结果
NAME#AGE#SALARY#EMAIL
Bob#59#1700#bob@bob.com
我该怎么做?
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)
在 Caché 中,您可以使用系统管理门户导出数据。您可以在 documentation 中阅读如何做到这一点。
我需要 运行 一个通用 SQL
查询,在查询结果的每个字段之间使用字符 #,以便我可以在 Excel
中使用。即:
SELECT * FROM EMPLOYEE
结果
NAME#AGE#SALARY#EMAIL
Bob#59#1700#bob@bob.com
我该怎么做?
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)
在 Caché 中,您可以使用系统管理门户导出数据。您可以在 documentation 中阅读如何做到这一点。