首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用SQL创建html内容

使用SQL创建html内容
EN

Stack Overflow用户
提问于 2020-07-10 19:25:53
回答 2查看 765关注 0票数 1

我正在使用2016。我可以用在另一个版本上。

我的表中有html页面内容的变量。

Server表:

代码语言:javascript
运行
复制
PageVariables
Menus
Slides etc.

我可以在Server中无需编程就生成页面html吗?

我试着用部分替换的方法来做。但它不适用于多行表。我也不认为这是正确的方法。

javascript中是否有类似于SQL Server的东西,如胡子、vue、javascript文字?

代码语言:javascript
运行
复制
declare @template nvarchar(max)='<html><head>{title}</title></head><body><div class="menu">{menu}</div></body></html>'

declare @title  nvarchar(max)='My Page'
declare @menu  nvarchar(max)=''

SELECT 'My Menu-1' AS 'MenuName',
       '?link=1' AS 'MenuLink'
UNION ALL
SELECT 'My Menu-2' AS 'MenuName',
       '?link=2' AS 'MenuLink'

/*
for @menu
    set @menu='<a href="@MenuLink">@MenuName</a>'
next
*/
SET @template = REPLACE(@template, '{title}', @title)
SET @template = REPLACE(@template, '{menu}', @menu)

SELECT @template

这也是很难做到的。

代码语言:javascript
运行
复制
        SELECT '?link=1' AS '@href',
               'My Menu-1' AS 'span'

        UNION ALL
        SELECT '?link=2' AS '@href',
               'My Menu-2' AS 'span'

        FOR XML PATH ('a'), ROOT ('div')

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-10 20:08:21

当您需要将多个行组合成单个条目时,您想要做的是其中一个字符串连接操作

  1. 使用用于XML路径的多行连接
  2. 使用合并连接行
  3. 使用STRING_AGG
票数 0
EN

Stack Overflow用户

发布于 2020-07-10 20:12:17

这是可行的,但动力是正确的,你可能会很快超过这项技术。

映射表可以有尽可能多的项目需要。即使是不需要的物品,也会被忽略。

这里是一个简化的例子.

代码语言:javascript
运行
复制
declare @template nvarchar(max)='
<html>
    <head>
        <title>{title}</title>
    </head>
    <body>
        <div class="welcome">{username}</div>
        <div class="menu">
            {menu}
        </div>
    </body>
</html>
'

Declare @map table (Seq int,Item varchar(100),Value varchar(max))
Insert Into @map values
 (1   ,'{title}','My Page')
,(2   ,'{username}','Mary-Jane')
,(9999,'{title}','')             -- clean-up
,(9999,'{username}','')          -- clean-up
,(9999,'{menu}','')              -- clean-up


-- Generate from select ... note the trailing {menu}
Insert Into @map values  
 (1  ,'{menu}','<a href="My Menu-1">?link=1</a>{menu}')
,(2  ,'{menu}','<a href="My Menu-2">?link=2</a>{menu}')



Select @template=replace(@template,Item,Value)
 From  @map
 Order By Seq

Print @template

返回

代码语言:javascript
运行
复制
<html>
    <head>
        <title>My Page</title>
    </head>
    <body>
        <div class="welcome">Mary-Jane</div>
        <div class="menu">
            <a href="My Menu-1">?link=1</a><a href="My Menu-2">?link=2</a>
        </div>
    </body>
</html>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62841075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档