我知道如何从表中获取列名
SELECT Column_name
from Information_schema.columns
where Table_name like 'summary'
我知道如何获取如下数据
SELECT * FROM [summary] where Id='12345";
但是我如何将这些结合起来以便即使没有数据我至少获取表的列名?
提前致谢。
修改__________________________________________________________
table
id name
123 test
12345 test2
在我运行此组合查询后的上述示例中,我希望结果为
id 12345
name test2
但如果我使用像“hello”
这样的id运行查询然后结果应为
id
name
答案 0 :(得分:0)
首次查询使用确切的列名来查找
SELECT Column_name
FROM Information_schema.columns
WHERE Table_name LIKE 'Columns'
第二次查询:
SELECT * FROM [summary] WHERE Id='12345";
联合所有这两个查询:
SELECT Column_name
FROM Information_schema.columns
WHERE Table_name LIKE 'IND'
UNION ALL
SELECT * FROM [summary] WHERE Id='12345";
答案 1 :(得分:0)
执行t-sql Select语句时返回的列取决于您的Select语句,列中的数据不会影响从select语句返回的数字列。
SELECT Column1 , Column2 , Column3 --<-- COlumn names
FROM Table_Name
在上面的查询中,无论列Column1,Column2和Column3中存在哪些数据,查询都将返回所有三列。
所以你假设查询应该返回一个列,即使没有数据也是错误的。
您可以在上面提到的语句中明确使用要返回的select语句中的列名,或者可以使用*
而不是使用列名来返回列表中的所有列该表,无论是否存在任何数据。
SELECT *
FROM Table_Name
答案 2 :(得分:0)
如果你想在没有数据时使用表的列名,那么你就像这样使用
IF EXISTS(SELECT * FROM [summary] where Id='12345')
BEGIN
SELECT * FROM [summary] where Id='12345'
END
ELSE
BEGIN
SELECT Column_name
FROM Information_schema.columns
WHERE Table_name like 'summary'
END
答案 3 :(得分:0)
我认为在这里使用简单的CASE
就足够了:
SELECT
case when id is null then '' else id end ,
case when name is null then '' else name end
FROM [summary] where Id='hello';