经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MS SQL Server » 查看文章
字符是否为SQL的保留字
来源:cnblogs  作者:Insus.NET  时间:2018/11/19 9:14:04  对本文有异议

要想知道字符是否为MS SQL Server保留字,那我们必须把SQL所有保留字放在一个数据集中。然后我们才能判断所查找的字符是否被包含在数据集中。

MS SQL Server保留字:

  1. DECLARE @ReservedWords VARCHAR(2000) = 'add,all,alter,and,any,as,asc,authorization,avg,backup,begin,between,break,browse,bulk,by,cascade,case,check,checkpoint,close,clustered,coalesce,column,commit,committed,compute,confirm,constraint,contains,containstable,continue,controlrow,convert,count,create,cross,current,current_date,current_time,current_timestamp,current_user,cursor,database,dbcc,deallocate,declare,default,delete,deny,desc,disk,distinct,distributed,double,drop,dummy,dump,else,end,errlvl,errorexit,escape,except,exec,execute,exists,exit,fetch,file,fillfactor,floppy,for,foreign,freetext,freetexttable,from,full,goto,grant,group,having,holdlock,identity,identity_insert,identitycol,if,in,index,inner,insert,intersect,into,is,isolation,join,key,kill,left,level,like,lineno,load,max,min,mirrorexit,national,nocheck,nonclustered,not,null,nullif,of,off,offsets,on,once,only,open,opendatasource,openquery,openrowset,option,or,order,outer,over,percent,percision,perm,permanent,pipe,plan,prepare,primary,print,privileges,proc,procedure,processexit,public,raiserror,read,readtext,reconfigure,references,repeatable,replication,restore,restrict,return,revoke,right,rollback,rowcount,rowguidcol,rule,save,schema,select,serializable,session_user,set,setuser,shutdown,some,statistics,sum,system_user,table,tape,temp,temporary,textsize,then,to,top,tran,transaction,trigger,truncate,tsequal,uncommitted,union,unique,update,updatetext,use,user,values,varying,view,waitfor,when,where,while,with,work,writetext,'

 

此时,我们可以把这字符串拆分插入一张表中:

 

  1. CREATE TABLE [dbo].[ReservedWordOfSql]
  2. (
  3. [KeyWork] NVARCHAR(40)
  4. )
  5. GO
Source Code

 

 

  1. WHILE CHARINDEX(',',@ReservedWords) <>0
  2. BEGIN
  3. DECLARE @v NVARCHAR(40) = LTRIM(RTRIM(SUBSTRING(@ReservedWords,1,CHARINDEX(',',@ReservedWords) - 1)))
  4. INSERT INTO [dbo].[ReservedWordOfSql] ([KeyWork]) VALUES (@v)
  5. SET @ReservedWords = STUFF(@ReservedWords,1,CHARINDEX(',',@ReservedWords),N'')
  6. END
  7. GO
Source Code

 

举例说明:

 

其实,我们可以写成一个自定义函数:

 

  1. CREATE FUNCTION [dbo].[svf_IsReservedWord]
  2. (
  3. @searchword NVARCHAR(40)
  4. )
  5. RETURNS BIT
  6. AS
  7. BEGIN
  8. DECLARE @exists BIT = 1
  9. IF NOT EXISTS(SELECT TOP 1 1 FROM [dbo].[ReservedWordOfSql] WHERE [KeyWork] = @searchword)
  10. SET @exists = 0
  11. RETURN @exists
  12. END
  13.  
  14. GO
Source Code

 

执行函数,将得到相同的结果:

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号