一个关于SQL的字符串的问题

zhiguo2008 2007-11-12 02:32:41
CREATE TABLE T
(
工厂名称 VARCHAR(20),
产品号 VARCHAR(20),
数量 INT,
日期 DATETIME
)

INSERT INTO T
SELECT 'a','6800',51,'2007-5-14' UNION ALL
SELECT 'b','6800',52,'2007-5-14' UNION ALL
SELECT 'a','1920',53,'2007-5-14' UNION ALL
SELECT 'a','6800',54,'2007-5-15' UNION ALL
SELECT 'a','1920',54,'2007-5-15' UNION ALL
SELECT 'b','6800',54,'2007-5-15'
GO
select * from T
DECLARE @sql VARCHAR(8000)
SET @sql = 'SELECT 日期=CASE WHEN GROUPING(日期) =1 THEN ''合计'' ELSE 日期 END'
SELECT @sql = @sql + ',['+产品号+'-'+工厂名称+']=ISNULL(SUM(CASE WHEN 工厂名称 = '''+工厂名称+''' AND
产品号 = '''+产品号+''' THEN 数量 END),0)'
FROM
( SELECT 产品号 FROM T GROUP BY 产品号 ) A, ( SELECT 工厂名称 FROM T GROUP BY 工厂名称 ) B
ORDER BY 产品号 DESC,工厂名称


EXEC( @sql + ',[合计]=SUM(数量) FROM (SELECT 工厂名称,产品号,数量,日期=CONVERT(CHAR(10),日期,120) FROM T) A GROUP BY 日期 WITH ROLLUP')

这是一个社区的专家写的一个有关工厂产品分类的SQL语句,请问这个@sql字符串变量的单引号('')到底是怎么匹配的呢?请教大家....



...全文
43 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
bqb 2007-11-12
  • 打赏
  • 举报
回复
sql中,insert into yourTable(f1,f2) values(100,'abc')字符串数据是用单引号包在外面的,
如果插入的数据中包含单引号,就需要处理,你可以将单引号替换成两个单引号,
在sql中连续两个单引号就表示一个单引号字符。


例如
insert into yourTable(f1,f2) values(100,'ab''c')表示插入新记录f2字段为ab'c 使用函数replace可以实现这个功能: replace(变量,"'","''") 
bqb 2007-11-12
  • 打赏
  • 举报
回复
字符串里面的单引号 要用两个单引号
如: ' -> ''

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧