“/”附近的语法不正确。在SQL Server 2012中
我试图在这个语句中应用除法运算符,但它抛出了一个错误 “/”附近的语法不正确 我正在使用SQL Server 2012“/”附近的语法不正确。在SQL Server 2012中,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我试图在这个语句中应用除法运算符,但它抛出了一个错误 “/”附近的语法不正确 我正在使用SQL Server 2012 (select count(distinct emploc) as test from location) / (select count(emploc) from location) 您可以在单个查询中使用它 SELECT count(distinct emploc)/convert(float,count(emploc)) as Test from location
(select count(distinct emploc) as test from location) /
(select count(emploc) from location)
您可以在单个查询中使用它
SELECT count(distinct emploc)/convert(float,count(emploc)) as Test from location
您需要在表达式之前选择:
select ((select count(distinct emploc) as test from location) /
(select count(emploc) from location)
)
SQL查询以select开头。在一些情况下,您可以从选择开始。例如使用union all时。SQL解析器不是算术表达式的通用表达式解析器,因此选择2/1可以工作,但不是2/1。它应该如下所示
SELECT
(select count(distinct emploc) as test from location)/(select count(emploc) from location)
虽然你可以在一个单独的查询中
select count(distinct emploc) / count(emploc) from location
我在执行进程时发现了此错误 Msg 102,15级,状态1,程序proc1,第7行 附近的语法不正确。 以下是wk和dd发现语法错误时的脚本 创建过程proc1 @名称VARCHAR50,-数据库名称 @path VARCHAR256,-备份文件的路径 @databasepath VARCHAR256,-备份文件的路径 @fileName VARCHAR256,-备份文件名 @fileDate VARCHAR200,-用于文件名 @DeleteDateBAK DATETIME=DATEADD wk,-1,GETDATE,-截止日期 @DeleteDateTRN DATETIME=DATEADDdd,-2,GETDATE;-截止日期 声明@name VARCHAR50;-数据库名称 声明@path VARCHAR256;-备份文件的路径 声明@databasepath VARCHAR256;-备份文件的路径 声明@fileName VARCHAR256;-备份文件名 声明@fileDate VARCHAR200;-用于文件名 声明@DeleteDateBAK DATETIME=DATEADDwk,-1,GETDATE;-截止日期 声明@DeleteDateTRN DATETIME=DATEADDdd,-2,GETDATE;-截止日期 -备份路径。 SET@path='G:\backup\DXC\u bkp\u计划与维护\' -获取要包含在文件名中的日期。 选择@fileDate=ReplaceConvertVarchar20,GETDATE,120'-','','':', 设置@fileDate=@fileDate+''\ 设置@fileDate=@fileDate+CONVERTVARCHAR200,ABSCONVERTBIGINT,CONVERTBINARY8,新ID%10000000 -动态获取服务器上的每个数据库。 声明的db_游标 选择名称 从master.sys.databases 其中名称不在“主”、“模型”、“msdb”、“tempdb”、“ApexSQLBackupCentralRepository”、“职业发展”、“CensusDB”、“上下文”、“控制”、“仪表板”、“DAY_仪表板”、“dbdgetEnglishForHP-CMS”、“Ddget_Uh”、“DdH”、“Dummy_UDS”、“GOA”、“GoogleAnalytics”、“INSTDB”、“Mig”、“Migrated”、“Qual”、“Rnduurancs”、“Test”中 打开db_光标; 从db_游标获取下一个到@name -循环浏览列表以备份每个数据库。 而@@FETCH\u STATUS=0 开始 -生成路径和文件名。 设置@databasepath=@path+@name+N'\'; SET@fileName=@databasepath+@name+'backup'+@fileDate+'.BAK'
EXEC master.dbo.xp_create_subdir @databasepath
-- Backup the database.
BACKUP DATABASE @name TO DISK = @fileName WITH NOFORMAT, NOINIT, SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10;
-- Purge old backup files from disk.
EXEC master.sys.xp_delete_file 0,@path,'BAK',@DeleteDateBAK,1;
EXEC master.sys.xp_delete_file 0,@path,'TRN',@DeleteDateTRN,1;
-- Loop to the next database.
FETCH NEXT FROM db_cursor INTO @name;
结束
-清理一下。
关闭db_光标;
释放db_游标 在开始处添加另一级别的SELECT。