查询以大写形式选择没有其名称的所有表名

时间:2010-11-25 11:40:03

标签: sql sql-server

任何人都可以向我提供一个查询来选择db中没有大写名称的所有表的列表吗?

5 个答案:

答案 0 :(得分:5)

SELECT * FROM
sys.tables -- or local equivalent. This is for SQL Server
WHERE
   UPPER(name) COLLATE Latin1_General_BIN <> name COLLATE Latin1_General_BIN

答案 1 :(得分:2)

@ gbn的答案对于任何最新版本的SQL Server都是正确的。

2000年:

SELECT * FROM
sysobjects
WHERE
   UPPER(name) COLLATE Latin1_General_BIN <> name COLLATE Latin1_General_BIN
AND OBJECTPROPERTY(ID,N'IsTable')=1 and OBJECTPROPERTY(ID,N'IsMSShipped')=0

答案 2 :(得分:0)

select语句中的表名可能不区分大小写,但这并不意味着您不能返回非大写表的名称:

SELECT  name
FROM    sys.tables
WHERE   (name <> UPPER(name))

答案 3 :(得分:0)

SELECT name
FROM sys.tables
WHERE name <> UPPER(name) COLLATE Latin1_General_BIN

答案 4 :(得分:0)

SELECT name
FROM sys.tables 
WHERE CAST(name as varbinary) <> CAST(UPPER(name) as varbinary)