DECLARE @Tmp TABLE(id INT IDENTITY(1,1),TBookCode CHAR(6),TNodeID NUMERIC(18,0),TMaterialCode VARCHAR(50))
DECLARE @tmpa TABLE(id INT ,TTTypeID VARCHAR(30))
DECLARE @NewTmp TABLE(id INT IDENTITY(1,1),aid INT ,typeId VARCHAR(30))
INSERT INTO @Tmp (TBookCode,TNodeID,TMaterialCode) SELECT BookCode,NodeID,MaterialCode FROM dbo.MRelate WHERE CHARINDEX(',',TypeID)>0
INSERT INTO @tmpa SELECT t.id,r.TypeID FROM @Tmp t
LEFT JOIN dbo.MRelate r ON t.TBookCode=r.BookCode AND t.TMaterialCode=r.MaterialCode AND t.TNodeID=r.NodeID
WHILE EXISTS(SELECT TTTypeID FROM @tmpa WHERE CHARINDEX(',',TTTypeID)>0)
BEGIN
INSERT INTO @NewTmp (aid,typeId)SELECT id,
CASE WHEN CHARINDEX(',',TTTypeID)>0 THEN RTRIM(LTRIM(LEFT(TTTypeID,CHARINDEX(',',TTTypeID)-1)))
WHEN CHARINDEX(',',TTTypeID)=0 THEN RTRIM(LTRIM(TTTypeID)) END
FROM @tmpa
DELETE @tmpa WHERE CHARINDEX(',',TTTypeID)=0
UPDATE @tmpa SET TTTypeID=SUBSTRING(TTTypeID,CHARINDEX(',',TTTypeID)+1,30)
END
IF NOT EXISTS(SELECT TTTypeID FROM @tmpa WHERE CHARINDEX(',',TTTypeID)>0)
BEGIN
INSERT INTO @NewTmp (aid,typeId)SELECT id,RTRIM(LTRIM(TTTypeID)) FROM @tmpa
END
SELECT t.TBookCode,t.TNodeID,t.TMaterialCode,nt.typeId FROM @NewTmp nt
LEFT JOIN @Tmp t ON nt.aid = t.id ORDER BY nt.aid,nt.typeId
要出来的数据格式为
除了之后的数据格式为TTTypeID中的值只有一个
例如id=1的处理之后为两条记录,分别为
id TTTypeID
1 1
1 11
要想达到这样的效果,应用MSSQL语句处理的方式如上。
- 拆分.zip (582 Bytes)
- 描述: MSSQL_拆分源文件_2000
- 下载次数: 0
- 描述: 要出来的数据格式
- 大小: 4.4 KB
分享到:
相关推荐
MSSQL数据库中,各种字符串分拆处理函数
自己写了一个function 用于处理拆分时的逻辑运算,性能比网上找的快好几倍, 代码和说明:https://blog.csdn.net/jimyao37/article/details/123522885
今天看到一条用函数处理连接的SQL,是群里某位网友的,SQL语句如下: SELECT SO_Order.fdate , SO_Order.fsn FROM so_order INNER JOIN so_orderitem ON CHARINDEX(so_Orderitem.fid, SO_Order.fid) >= 1 ...
在SQL Server 2008中,处理字符串的拆分是一项常见的任务,特别是在处理列表或者多值字段时。本文将详细讲解如何拆分字符串,并提供一个具体的实例来演示这一过程。 首先,我们要解决的问题是如何将一个包含多个值...
《C#版生产管理进销存(MSSQL)管理系统代码详解》 在信息化时代,企业对内部管理的需求日益增强,特别是在生产与供应链管理方面。C#作为一种强大的编程语言,结合SQL Server数据库,能够构建出高效稳定的进销存管理...
2. **表的垂直和水平分割**:通过将大表拆分为较小的表,可以显著提高查询性能。垂直分割是指将表中的列分成不同的表,而水平分割则是按照行将表分成不同的表。 3. **优化索引**:合理创建索引对于提高查询速度至关...
因此,大数据库转换可能需要拆分或优化。 - 功能差异:MsSQL的一些高级特性,如存储过程、触发器,Access可能不支持,需要进行调整或替换。 - 性能:Access在处理大量并发和复杂查询时的性能不如MsSQL,应评估转换...
在IT领域,处理数据时经常会遇到需要将多行文本按照特定分隔符拼接成单行的情况,这在数据库查询、数据分析或者日志处理中尤为常见。标题中的"多行以指定分隔符拼接桌面绿色程序"所指的就是一个能够帮助用户实现这一...
数据库设计时,通常会按照实体关系(ER)模型,将不同类型的档案信息拆分为多个表,如员工表、部门表、职位表等,通过外键关联,确保数据的一致性和完整性。 系统可能包含的功能模块有: 1. 员工信息录入:用户可以...
这个函数将接受两个参数:`@ttstring`,即需要拆分的字符串;`@separator`,即字符串中拆分符。函数返回一个临时表 `@temp`,其中包含分割后的结果。 ```sql CREATE FUNCTION [dbo].[StringSplit] ( @ttstring ...
React以其组件化开发模式著称,它允许开发者将UI拆分成可重用的独立部分,提高了代码复用性和维护性。ReactJS使用JSX语法,结合虚拟DOM技术,能够高效地更新和渲染UI,提供优秀的性能。此外,React还提供了如React ...
3. **避免`OR`条件**:`OR`连接的条件同样会阻碍索引的使用,可将其拆分为多个查询,用`UNION ALL`合并结果。 4. **谨慎使用`IN`和`NOT IN`**:这些操作可能导致全表扫描,尤其是当值集合较大时。对于连续的数值,...
【MSSQL Server 查询优化方法】 在数据库管理中,SQL Server查询优化是提升系统性能的关键环节。查询速度慢可能是由于多种原因造成的,包括但不限于以下几点: 1. **没有索引或索引未被利用**:这是导致查询慢的...
### SQL优化(MSSQL版本) #### 序言 在软件开发过程中,SQL查询的性能直接影响着应用程序的整体表现。为了提升开发过程中SQL书写的质量,提高程序运行效率,并减少因SQL书写不良导致的项目成本增加,本文将详细...
在MSSQL Server中处理记录条数超过2000万且每日增量达20万条的大数据量表,是许多开发者面临的一项挑战。本文通过一个实际案例探讨了解决这一问题的方法及其潜在局限性。针对SQL Server 2000,可以通过定义分区视图...
拆分组装:整进散出,或是整出散进等可以自由的拆分组合产品。 统计报表:完整的统计查询功能,每张单据每次业务金额都可以清楚的反映。 权限管理:可添加删除系统操作员帐号,强大的权限控制,可以设置某用户对某...
第一步,我们可以使用`OUTER APPLY`和自定义函数`fun_SplitIds`(该函数的作用是将逗号分隔的ID字符串拆分为单独的ID)将员工表和部门表关联。这将生成一个临时结果集,包含每个员工ID及其对应的部门名称。如果员工...
根据月份将原始数据表拆分为多个小表,例如: - `PerformanceData_202301` - `PerformanceData_202302` - `PerformanceData_202303` 每个子表具有与原始表相同的结构,但只包含一个月的数据。 **3. 分区视图定义...
它将每3个字节的二进制数据拆分成4个6位的二进制数,然后将每个6位二进制数转换为对应的Base64字符。 二、SQL Server 2005中的Base64加密 在SQL Server 2005中,没有内置的Base64加密函数。但我们可以自定义T-SQL...