我正在使用C#代码创建动态SQL Server表,但我需要验证表名。
验证SQL Server表名的正则表达式是什么?
答案 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
他们忘记了:https://msdn.microsoft.com/en-us/library/ms174979.aspx
是新表的名称。表名必须遵循标识符规则。 table_name最多可包含128个字符,但本地临时表名称(前缀为单个数字符号(#)的名称)除外,不能超过116个字符。
我写的规则是"完整"表,不适用于临时表,也不包括模式名称。