周一至周五 : 08:30 - 17:30 客服专员电话/微信:17301649371 QQ:2627049059
微信咨询

扫码微信咨询

关注公众号

关注微信公众号

电话: 021 5161 9370
返回顶部
求助,将一个单元格3个姓名或3个单位,分别拆分到3个单元格
显示全部楼层 倒序浏览 发表日期 2020-11-07 11:30:28 4147次阅读 2次回复
拆分.png

一个拆3个或多个

一个拆3个或多个
求助,将一个单元格3个姓名或3个单位,分别拆分到3个单元格,如图。
一个单元格有以下3个姓名及公司名:
范中河、惠州市东方园林工程有限公司、张志强

将这一个单元格的姓名及公司名,分别拆分到3个不同的单元格
范中河
惠州市东方园林工程有限公司
张志强
可用下面的函数
  1. CREATE FUNCTION [dbo].[Split](@Text NVARCHAR(4000),@Sign NVARCHAR(4000))
  2. RETURNS  @tempTable TABLE(id INT IDENTITY(1,1) PRIMARY KEY,[VALUE] NVARCHAR(4000))
  3. AS
  4. BEGIN
  5.      DECLARE @StartIndex INT                --开始查找的位置
  6.      DECLARE @FindIndex  INT                --找到的位置
  7.      DECLARE @Content    VARCHAR(4000)    --找到的值
  8.      --初始化一些变量
  9.      SET @StartIndex = 1 --T-SQL中字符串的查找位置是从1开始的
  10.      SET @FindIndex=0
  11.       
  12.      --开始循环查找字符串逗号
  13.      WHILE(@StartIndex <= LEN(@Text))
  14.      BEGIN
  15.          --查找字符串函数 CHARINDEX   第一个参数是要找的字符串
  16.          --                             第二个参数是在哪里查找这个字符串
  17.          --                             第三个参数是开始查找的位置
  18.          --返回值是找到字符串的位置
  19.          SELECT @FindIndex = CHARINDEX(@Sign,@Text,@StartIndex)
  20.          --判断有没找到 没找到返回0
  21.          IF(@FindIndex =0 OR @FindIndex IS NULL)
  22.          BEGIN
  23.              --如果没有找到者表示找完了
  24.              SET @FindIndex = LEN(@Text)+1
  25.          END
  26.          --截取字符串函数 SUBSTRING   第一个参数是要截取的字符串
  27.          --                             第二个参数是开始的位置
  28.          --                             第三个参数是截取的长度
  29.          --@FindIndex-@StartIndex 表示找的的位置-开始找的位置=要截取的长度
  30.          --LTRIM 和 RTRIM 是去除字符串左边和右边的空格函数
  31.          SET @Content = LTRIM(RTRIM(SUBSTRING(@Text,@StartIndex,@FindIndex-@StartIndex)))
  32.          --初始化下次查找的位置
  33.          SET @StartIndex = @FindIndex+1
  34.          --把找的的值插入到要返回的Table类型中
  35.          INSERT INTO @tempTable ([VALUE]) VALUES (@Content)
  36.      END
  37.      RETURN
  38. END
复制代码


电话/微信:18049989370 QQ:857188287
hessen 发表于 2020-11-7 11:57
可用下面的函数

谢谢,这真是好高深啊,看不懂啊,如果四个五个,也可以用这个代码吗?还是需要再修改内容

精彩评论2

可用下面的函数
  1. CREATE FUNCTION [dbo].[Split](@Text NVARCHAR(4000),@Sign NVARCHAR(4000))
  2. RETURNS  @tempTable TABLE(id INT IDENTITY(1,1) PRIMARY KEY,[VALUE] NVARCHAR(4000))
  3. AS
  4. BEGIN
  5.      DECLARE @StartIndex INT                --开始查找的位置
  6.      DECLARE @FindIndex  INT                --找到的位置
  7.      DECLARE @Content    VARCHAR(4000)    --找到的值
  8.      --初始化一些变量
  9.      SET @StartIndex = 1 --T-SQL中字符串的查找位置是从1开始的
  10.      SET @FindIndex=0
  11.       
  12.      --开始循环查找字符串逗号
  13.      WHILE(@StartIndex <= LEN(@Text))
  14.      BEGIN
  15.          --查找字符串函数 CHARINDEX   第一个参数是要找的字符串
  16.          --                             第二个参数是在哪里查找这个字符串
  17.          --                             第三个参数是开始查找的位置
  18.          --返回值是找到字符串的位置
  19.          SELECT @FindIndex = CHARINDEX(@Sign,@Text,@StartIndex)
  20.          --判断有没找到 没找到返回0
  21.          IF(@FindIndex =0 OR @FindIndex IS NULL)
  22.          BEGIN
  23.              --如果没有找到者表示找完了
  24.              SET @FindIndex = LEN(@Text)+1
  25.          END
  26.          --截取字符串函数 SUBSTRING   第一个参数是要截取的字符串
  27.          --                             第二个参数是开始的位置
  28.          --                             第三个参数是截取的长度
  29.          --@FindIndex-@StartIndex 表示找的的位置-开始找的位置=要截取的长度
  30.          --LTRIM 和 RTRIM 是去除字符串左边和右边的空格函数
  31.          SET @Content = LTRIM(RTRIM(SUBSTRING(@Text,@StartIndex,@FindIndex-@StartIndex)))
  32.          --初始化下次查找的位置
  33.          SET @StartIndex = @FindIndex+1
  34.          --把找的的值插入到要返回的Table类型中
  35.          INSERT INTO @tempTable ([VALUE]) VALUES (@Content)
  36.      END
  37.      RETURN
  38. END
复制代码


电话/微信:18049989370 QQ:857188287
hessen 发表于 2020-11-7 11:57
可用下面的函数

谢谢,这真是好高深啊,看不懂啊,如果四个五个,也可以用这个代码吗?还是需要再修改内容
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则  允许回帖邮件提醒楼主

快表软件是国内较早研究表格类软件开发平台的团队之一,迄今已有十多年的行业经验.致力于为企事业单位提供实用可靠的数字化平台。
  • 微信公众号

  • 微信小商店

  • 微信客服

  • Powered by Discuz! X3.4 | Copyright © 2022-2024, XiRong Soft. | 快表软件
  • 沪ICP备13033196号 | 营业执照 |上海西戎软件科技有限公司|沪公网安备31011502002146号|沪ICP备13033196号 |