MsSql根据结构获取空白记录

时间:2018-06-15 15:47:01

标签: javascript php sql-server datatable

有没有办法从SHOW COLUMNS FROM xxtable收回带有表格字段的空白记录?

目前,如果符合我的搜索条件,我可以获得记录返回 - 执行时:

SELECT * FROM xxtable WHERE fieldA = "blah"

但是如果没有匹配,我想收到一个'空'记录 - 不是null,但值为空。

我正在从PHP函数中调用回调JavaScript,所以我需要返回以提供JSON格式的记录。

我可以查看是否从select中返回任何内容,但是想知道是否有一种方法可以在每一步中创建一个具有正确字段名称的空记录。

2 个答案:

答案 0 :(得分:0)

听起来像你想要的那样:

if not exists(SELECT * FROM xxtable WHERE fieldA = 'blah')
begin
    select ''
end
else
begin
    SELECT * FROM xxtable WHERE fieldA = 'blah'
end

或许你想......

if not exists(SELECT * FROM xxtable WHERE fieldA = 'blah')
begin
    select 
        column1 = ''
        ,column2 = ''
        ....
end
else
begin
    SELECT * FROM xxtable WHERE fieldA = 'blah'
end

答案 1 :(得分:0)

不,不是真的。您对数据类型date列的期望是什么?那个int还是decimal怎么样? ''既不是日期也不是数字,但会隐式转换为列的数据类型。例如:

SELECT 1
UNION ALL
SELECT '';

请注意,''返回0,而不是''NULL。那是因为CONVERT(int,'') = 0。对于date,将返回值19000101

SELECT CONVERT(date,'20180101')
UNION ALL
SELECT '';

你可以这样做

SELECT '' AS [Column1Name],
       '' AS [Column2Name],
       '' AS [Column3Name],
       '' AS [Column4Name],
       ...

然而,问题是如果基础表中的列发生变化,这将不会反映出来。事实上,列数据类型不是反射性的也不是一个好主意。

老实说,我认为您需要弄清楚如何处理表示层中没有行的数据集,而不是通过创建错误的数据集来尝试它。