查询选择所有没有大写字母名称的表名

问题描述:

任何人都可以提供一个查询来选择数据库中没有大写字母名称的所有表的列表吗?在SELECT语句查询选择所有没有大写字母名称的表名

+0

您正在使用什么样的数据库? – 2010-11-25 11:44:18

+0

请参阅http://*.com/questions/153944/is-sql-syntax-case-sensitive – robert 2010-11-25 11:45:31

+0

你如何区分“ThisTable”,“THISTABLE”和“thistable”。最好在数据库表和字段中不要区分大小写。 – cflute 2010-11-25 11:53:27

@ 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 

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

呃,那很聪明:) – 2010-11-25 11:52:52

表名称可能是区分大小写的,但是,这并不意味着你不能回表的名称未大写:

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

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

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