我正在创建一个动态查询,其中我需要在检索例如以下内容时在db字段中放置一个空格,如果我给单引号不接受的话
DECLARE @QUERY VARCHAR(8000)
SET @QUERY='SELECT DATENAME(MM,getdate())+RIGHT(CONVERT(VARCHAR(20),getdate(),107),9)+SUBSTRING(CONVERT (VARCHAR(20),getdate(),100),12,6) + ' '+ RIGHT(CONVERT(VARCHAR(20),getdate(),100),2) AS CurrentDate'
EXECUTE (@QUERY)
目标是在hh:mm和AM / PM之间放置一个空格
答案 0 :(得分:3)
加倍引号
DECLARE @QUERY VARCHAR(8000)
SET @QUERY='SELECT DATENAME(MM,getdate())+RIGHT(CONVERT(VARCHAR(20),getdate(),107),9)+SUBSTRING(CONVERT (VARCHAR(20),getdate(),100),12,6) + '' ''+ RIGHT(CONVERT(VARCHAR(20),getdate(),100),2) AS CurrentDate'
EXECUTE (@QUERY)
但为什么这种动态?只需在行中运行
SELECT
DATENAME(MM,getdate())+
RIGHT(CONVERT(VARCHAR(20),getdate(),107),9)+
SUBSTRING(CONVERT (VARCHAR(20),getdate(),100),12,6) +
' '+
RIGHT(CONVERT(VARCHAR(20),getdate(),100),2) AS CurrentDate
或在客户端代码中格式化...
答案 1 :(得分:2)
试试这个:
DECLARE @QUERY VARCHAR(8000)
SET @QUERY='SELECT DATENAME(MM,getdate())
+RIGHT(CONVERT(VARCHAR(20),getdate(),107),9)
+SUBSTRING(CONVERT (VARCHAR(20),getdate(),100),12,6)
+ '' ''
+ RIGHT(CONVERT(VARCHAR(20),getdate(),100),2) AS CurrentDate'
EXECUTE (@QUERY)
要转义单引号,请将它们中的两个放在一起。
答案 2 :(得分:0)
将引号加倍(并假设动态SQL的需要是真实的)的另一种选择是简单地使用Char(32)
DECLARE @QUERY VARCHAR(8000)
SET @QUERY='SELECT DATENAME(MM,getdate())
+RIGHT(CONVERT(VARCHAR(20),getdate(),107),9)
+SUBSTRING(CONVERT (VARCHAR(20),getdate(),100),12,6)
+ Char(32)
+ RIGHT(CONVERT(VARCHAR(20),getdate(),100),2) AS CurrentDate'
EXECUTE (@QUERY)