用于验证SQL Server表名的正则表达式

时间:2015-05-10 13:08:43

标签: regex sql-server-2008 c#-4.0

我正在使用C#代码创建动态SQL Server表,但我需要验证表名。

验证SQL Server表名的正则表达式是什么?

1 个答案:

答案 0 :(得分:9)

link中描述的正则表达式应为:

var regex = new Regex(@"^[\p{L}_][\p{L}\p{N}@$#_]{0,127}$");

请注意,通常您必须在[...]中嵌入表的名称,因为规则3(因此SELECT * FROM [SET]是有效查询,因为,{{1} }}是一个保留关键字,你可以"转义"它与SET

请注意,在链接页面中规则不完整:

来自https://msdn.microsoft.com/en-us/library/ms175874.aspx

  1. 标识符不能是Transact-SQL保留字。 SQL Server保留保留字的大写和小写版本。在Transact-SQL语句中使用标识符时,不符合这些规则的标识符必须用双引号或括号分隔。保留的单词取决于数据库兼容级别。可以使用ALTER DATABASE语句设置此级别。
  2. 他们忘记了:https://msdn.microsoft.com/en-us/library/ms174979.aspx

      

    是新表的名称。表名必须遵循标识符规则。 table_name最多可包含128个字符,但本地临时表名称(前缀为单个数字符号(#)的名称)除外,不能超过116个字符。

    我写的规则是"完整"表,不适用于临时表,也不包括模式名称。