错误:除运算符的操作数数据类型varchar无效



我正在使用一个动态存储过程

if @ReportType = 'Daily Batch'
begin 
   set @SelectionList= 'select ''' + @tag0 + ''' as Tag0 , ''' + @tag1 + ''' as Tag1 , ''' +  @tag2 + ''' as Tag2 , ''' +  @tag3 + ''' as Tag3 , ''' +  @tag4 + ''' as Tag4 , ''' +  @tag5 + ''' as Tag5 
 , ''' +  @tag6 + ''' as Tag6 , ''' +  @tag7 + ''' as Tag7 , ''' +  @tag8 + ''' as Tag8 , ''' +  @tag9 + ''' as Tag9 , ''' +  @tag10 + ''' as Tag10 , ''' +  @tag11 + ''' as Tag11
 , ' +  @value0 + ' as Value0 , ' +  @value1 + ' as Value1, ' +  @value2 + ' as Value2 , ' +  @value3 + ' as Value3 , ' +  @value4 + ' as Value4 , ' +  @value5 + ' as Value5
 , ' +  @value6 + ' as Value6 , ' +  @value7 + ' as Value7 , ' +  @value8 + ' as Value8 , ' +  @value9 + ' as Value9 , ' +  @value10 + ' as Value10 , ' +  @value11 + ' as Value11         
 , RefProductWgt1, RefProductWgt2, RefProductWgt3, RefProductWgt4, RefProductWgt5, RefProductWgt6, RefProductWgt7, RefProductWgt8, 
                     RefProductWgt9, RefProductWgt10, ProductCount, PassCount, RejectCount, UnderWgts, OverWgts, DoubleCount, ReportId, StartDate as GroupColumn
 FROM  BatchMaster    
  WHERE SUBSTRING(StartDate, 0, charindex('/' , StartDate, 0))='''+ @startdate+''') AND (DeviceId = '''+@devid+''')     
 end
 exec (@SelectionList)

这里@SelectionList数据类型是nvarchar(3000),我只想从DateTime列中提取数据…

但是显示了这个错误:

操作数数据类型varchar对除法运算符无效。

这里'/'用作字符不分割,因为在我的列DateStoreLike (dd-mm-yy/HH:MM:SS)中,我试图在'/'符号

之前仅提取日期部分。

您收到的错误是因为您需要在斜杠的两侧各有两个单引号:

...WHERE SUBSTRING(StartDate, 0, charindex(''/'' , StartDate, 0))='''+ @startdate+''') AND (DeviceId = '''+@devid+''')     

例如,以下两个查询将返回'5'作为结果:

SELECT charindex('/' , 'this/string', 0)
DECLARE @sql VARCHAR (55) = 'SELECT charindex(''/'' , ''this/string'', 0)'
EXEC(@sql)

当您希望在字符串中出现单引号时,您需要使用两个单引号。要演示这一点,可以运行以下命令:

SELECT '' --This will return an empty string
SELECT '''' --This will return a single quotation mark

相关内容

最新更新