SQL SERVER-修改表名和列名

修改表名:EXEC sp_rename ‘原有表名’, '新表名';

修改列名:EXEC sp_rename ‘表名.[原有列名]’, ‘新列名' , 'COLUMN';

展开阅读全文

sql语法解析 提取其中的表名列名

01-05

最近有个项目需要把用户传过来的SQL语句解析 提取其中的表名,列名。rn参考了下网上的一些资料 跟ZSWANG以前写的一个C#语法分析。但是要完全正确的提取出来 表名,列名还是没实现。rn想在这里想大伙求教下。rn下面是分析代码rn[code=C#]rn/// rn/// 语法分析基类 rn/// rnpublic class SyntaxEnginernrn /// rn /// 语法项 rn /// rn public class SyntaxItemrn rn private string FPattern; // 正则表达式 rn private RegexOptions FOptions; // 正则表达式附加选项 rn private string FName; // 语法名称 rn private int FIndex; // 序号 rn public string Pattern get return FPattern; // 正则表达式 rn public RegexOptions Options get return FOptions; // 正则表达式附加选项 rn public string Name get return FName; // 名称 rn public int Index get return FIndex; // 序号 rn public SyntaxItem(string APattern, RegexOptions AOptions,rn string AName, int AIndex)rn rn FPattern = APattern;rn FOptions = AOptions;rn FName = AName;rn FIndex = AIndex;rn rn rn /// rn /// 语法分析返回项 rn /// rn public class AnalyzeReslutrn rn private SyntaxItem FItem; // 所属语法项 rn private string FBlock; // 文字块 rn public SyntaxItem Item get return FItem; rn public string Block get return FBlock; rn public AnalyzeReslut(SyntaxItem AItem, string ABlock)rn rn FItem = AItem;rn FBlock = ABlock;rn rn rnrn private List FSyntaxItems = new List();rn private List FAnalyzeResluts = new List();rn public List SyntaxItems get return FSyntaxItems; rn public List AnalyzeResluts get return FAnalyzeResluts; rn /// rn /// 进行语法分析 rn /// rn /// 所分析的代码 rn /// 返回分析是否成功 rn public virtual bool Analyze(string ACode)rn rn if (FSyntaxItems.Count <= 0)rn return false;rn if (ACode == null)rn return false;rn AnalyzeResluts.Clear();rn string vCode = ACode;rn bool vFind = true;rn while (vFind && (vCode.Length > 0))rn rn vFind = false;rn foreach (SyntaxItem vSyntaxItem in FSyntaxItems)rn rn bool reg = Regex.IsMatch(vCode, vSyntaxItem.Pattern, vSyntaxItem.Options);rn if (reg)rn rn AnalyzeResluts.Add(new AnalyzeReslut(vSyntaxItem,rn Regex.Match(vCode, vSyntaxItem.Pattern,rn vSyntaxItem.Options).Value));rn vCode = Regex.Replace(vCode, vSyntaxItem.Pattern, "",rn vSyntaxItem.Options);rn vFind = true;rn break;rn rn rn rn return true;rn rnrn public string findgjz()rn rn string aruslut="";rn foreach (AnalyzeReslut ar in AnalyzeResluts)rn rn if (ar.Item.Name == "标识符")rn aruslut += ar.Block + ",";rn rn return aruslut;rn rnrn[/code] 论坛

没有更多推荐了,返回首页