请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

隔壁老王 活字格认证

金牌服务用户

385

主题

1285

帖子

4910

积分

金牌服务用户

积分
4910

活字格认证

隔壁老王 活字格认证
金牌服务用户   /  发表于:2022-10-29 13:25  /   查看:1735  /  回复:6
200金币




想要把表1中三个字段的全部内容拆分后放入表2中

每个字段的内容以空格分开,每个单词存入到表2号



附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

给您一个简单的方法: 函数+服务端命令 1、用textjion函数把表一里的内容合并 您会得到一串字符 因为您原本的内容里使用的是空格,使用SUBSTITUTE函数把空格替换成逗号 前端的任务就完成了,现在来写服务端命令 定义一个参数,参数名自定义,我用的arr 使用“分割文本为数组”命令 再添加一个循环命令 然后再使用数据表操作命令 F5运行一下~ 搞定~哈哈哈哈~

6 个回复

最佳答案
最佳答案
吴小胖讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2022-10-29 13:25:11
来自 4#
给您一个简单的方法:

函数+服务端命令
1、用textjion函数把表一里的内容合并
  1. =TEXTJOIN(",",TRUE,C3)
复制代码

您会得到一串字符

  1. 小朋友 月亮 火车 太阳,手机 相机 电视,明天 可以 祖国
复制代码
因为您原本的内容里使用的是空格,使用SUBSTITUTE函数把空格替换成逗号
  1. =SUBSTITUTE(B29," ",",")
复制代码
前端的任务就完成了,现在来写服务端命令
定义一个参数,参数名自定义,我用的arr

使用“分割文本为数组”命令

再添加一个循环命令

然后再使用数据表操作命令

F5运行一下~

搞定~哈哈哈哈~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1金币 +5 收起 理由
Lay.Li + 5 赞一个!

查看全部评分

回复 使用道具 举报
mfkpie8
论坛元老   /  发表于:2022-10-29 14:34:57
2#
这个还是用SQL来实现会好处理百度一下前面提到了记录合并,有了合并需求肯定也会有分离需求,说到字符串分离,大家肯定会想到SPLIT函数,这个在.NET,Java和JS中都有函数,很可惜在SQL SERVER中没有,我们只能自己来写这么一个函数。

首先来分析一下怎么写这个函数,以之前合并的字符串为例,“张三,李四,王五,钱六,赵七,Tom,Amy,Joe,Leo”,现在要将此字符串按照“,”进行分离得到一组数据,现在可以得出这个函数传入变量有两个,一个是目标字符串,我们定义为@string,数据类型为nvarchar(500),选择nvarchar()是为了兼顾所有Unicode字符集,比如中文;另一个变量为分隔符,我们定义为@separator,数据类型为nvarchar(10),输出变量则定义为@array,一个单列列名为String,数据类型为nvarchar(500)的Table。

下面来分析具体的拆分方法,以字符串“张三,李四,王五,钱六,赵七,Tom,Amy,Joe,Leo”为例,首先得找到第一个“,”,然后把“张三”截取出来,然后将目标字符串变成“李四,王五,钱六,赵七,Tom,Amy,Joe,Leo”,然后再找第一个“,”,把“李四”截取出来,依次类推,直到找不到“,”,有了这个思路,下面就直接实现,查找字符串在程序语言中一般用indexOf方法,截取一般用Substring方法,SQL SERVER中有SUBSTRING函数用来截取字符串,但是没有indexOf查找函数,取而代之的是CHARINDEX和PATINDEX函数,CHARINDEX用于完全匹配查找,而PATINDEX用于模糊匹配查找,根据我们的需求,选用CHARINDEX函数,整个SPLIT函数代码如下:

CREATE FUNCTION [dbo].[SPLIT]

(

-- Add the parameters for the function here

@string nvarchar(500),  

    @separator nvarchar(10)

)

RETURNS @array TABLE(String nvarchar(500))

AS

BEGIN

-- Declare the return variable here

DECLARE @separatorIndex int,@tempString nvarchar(500),@tagString nvarchar(500)

-- Add the T-SQL statements to compute the return value here

    SET @tagString=@string

SET @separatorIndex=CHARINDEX(@separator,@tagString)  

    WHILE(@separatorIndex<>0)

BEGIN

        SET @tempString = SUBSTRING(@tagString,1,@separatorIndex-1)  

        INSERT INTO @array(String) VALUES(@tempString)  

        SET @tagString = SUBSTRING(@tagString,@separatorIndex+1,LEN(@tagString)-@separatorIndex)  

        SET @separatorIndex=CHARINDEX(@separator,@tagString)  

    END  

    SET @tempString = @tagString  

    IF (LEN(@tempString)>0)  

        INSERT INTO @array(String) VALUES(@tagString)  

-- Return the result of the function

RETURN

END

GO

评分

参与人数 1金币 +5 收起 理由
Lay.Li + 5 赞一个!

查看全部评分

回复 使用道具 举报
隔壁老王活字格认证
金牌服务用户   /  发表于:2022-10-29 14:55:49
3#
mfkpie8 发表于 2022-10-29 14:34
这个还是用SQL来实现会好处理百度一下前面提到了记录合并,有了合并需求肯定也会有分离需求,说到字符串分 ...

  非常感谢大佬的详细解释
道理是懂了
但是我不认识代码  也不知道这个代码放哪里!

能请大佬帮我弄一个 活字格文件 不
回复 使用道具 举报
吴小胖讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2022-10-29 15:33:25
5#
我用的是8.0.102~官网最新版的~工程文件见附件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1金币 +5 收起 理由
Lay.Li + 5 赞一个!

查看全部评分

回复 使用道具 举报
隔壁老王活字格认证
金牌服务用户   /  发表于:2022-10-29 15:50:53
6#
吴小胖 发表于 2022-10-29 15:33
我用的是8.0.102~官网最新版的~工程文件见附件

  好。很好,非常好,正是我想要的结果,非常感谢  简单易用,我之前就是没看到有分割文本为数组这个插件
回复 使用道具 举报
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:2022-10-31 09:59:14
7#
感谢各位大佬的支持~
各位大佬真是各显神通啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部