下面的SQL似乎可以正常工作,但是我想知道是否有更好的方法来编写此代码。我正在尝试选择具有特定名称的所有视图和表。如果找到匹配项,则只能有一个返回值。
SELECT DISTINCT name
FROM sys.tables
WHERE name = 'MyName'
UNION ALL
SELECT DISTINCT name
FROM sys.views
WHERE name = 'MyName'
Run Code Online (Sandbox Code Playgroud)
还有另一个视图可以帮助您 - 它是一个包含表和视图的单个视图。在性能方面,我的单表查询性能更好,尽管您只会在具有大量表的数据库上注意到。我为此目的修改了您的查询。
SELECT
DISTINCT NAME
FROM SYS.OBJECTS
WHERE TYPE IN ('U','V')
AND NAME= 'MYNAME'
Run Code Online (Sandbox Code Playgroud)
U = 用户表
V = 视图