请教大家一个关于SQL的问题,在线等,谢谢

风云再起9310 2017-10-16 04:59:43
场景描述:
现在订单表(Order)里面只是记录的产品Id(ProductType),然后消费产品名称是保存在MimoProduct表的。

问题:我想要把第一个脚本中的第一条数据中的 消费产品名称 改为"微信书";
把第一个脚本中的第二条数据中的 消费产品名称 改为"个性书封,对裱写真本-方册";

我需要怎么样改,才可以把第一个脚本中的 消费产品名称 替换成 我想要的?

在线等,,谢谢大家

如图所示:
...全文
179 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
繁花尽流年 2017-10-16
  • 打赏
  • 举报
回复
其实就是一个翻译id显示name的事情。给你个思路数据量不多个话创建个标量函数直接来翻译就行了。
IF OBJECT_ID('tempdb..tmp_1') IS NOT NULL DROP TABLE tmp_1
CREATE TABLE tmp_1(id INT,[name] NVARCHAR(100))
INSERT INTO tmp_1
SELECT 2000,'A001' UNION ALL
SELECT 3601,'B007' UNION ALL
SELECT 3688,'C089' 


CREATE FUNCTION fn_test(@str VARCHAR(100))
RETURNS NVARCHAR(2000)
AS
BEGIN

	DECLARE @name NVARCHAR(2000);

	SET		@name = STUFF( (
						SELECT	',' + CAST([name] AS VARCHAR)
						FROM	(
									SELECT DISTINCT  SUBSTRING(a.id, b.number, CHARINDEX(',', a.id+',', b.number)-b.number) AS id
									FROM   (SELECT @str AS id) a
										   JOIN MASTER.dbo.spt_values b
												ON CHARINDEX(',', ','+a.id, b.number) = b.number
									WHERE  b.[type]= 'P'
								) aa
						INNER JOIN tmp_1 bb ON bb.id=CAST(aa.id AS INT)
						ORDER BY [name]
						FOR XML PATH('')),1,1,'');

	RETURN @name
END

SELECT dbo.fn_test('2000,3601')
exception92 2017-10-16
  • 打赏
  • 举报
回复
分割 ”消费产品名称“ 字段,再与第二个表做关联查询
顺势而为1 2017-10-16
  • 打赏
  • 举报
回复
楼主把代码贴出来吧, 方便改写.

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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