分解成三列 37.5 28.2 26.8
求大神帮助
create table #t(col varchar(100))
insert into #t(col)
select '37.5*28.2*26.8cm'
select col1=[1],col2=[2],col3=[3]
from (select rn=row_number() over(order by getdate()),
val=replace(o.value('.','varchar(100)'),'cm','')
from (select val=convert(xml,'<r><n>'+replace(col,'*','</n><n>')+'</n></r>')
from #t) t
cross apply val.nodes('/r/n') x(o)) t
pivot(max(val) for rn in([1],[2],[3])) u
/*
col1 col2 col3
--------------- --------------- ---------------
37.5 28.2 26.8
(1 row(s) affected)
*/
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
GO
CREATE TABLE t(
v NVARCHAR(20)
)
SET NOCOUNT ON
INSERT INTO t VALUES ('37.5*28.2*26.8cm')
INSERT INTO t VALUES ('48.8*18.8*2.1cm')
GO
-------- 以上为测试表及测试数据 -----------
--方法1:repalce + ParseName
;WITH cte AS(
SELECT
v
,replace(replace(replace(v,'.','^'),'*','.'),'cm','') AS v2
FROM t
)
SELECT v
,replace(PARSENAME(v2,3),'^','.') AS c1
,replace(PARSENAME(v2,2),'^','.') AS c2
,replace(PARSENAME(v2,1),'^','.') AS c3
FROM cte
/*
v c1 c2 c3
-------------------- ------ ----- ----
37.5*28.2*26.8cm 37.5 28.2 26.8
48.8*18.8*2.1cm 48.8 18.8 2.1
*/
--方法2: 分割函数
--2.1 增加一个分割字符串的表值函数
IF OBJECT_ID('[dbo].[Fun_String2ToStringArray]') IS NOT NULL
DROP FUNCTION [dbo].[Fun_String2ToStringArray]
GO
CREATE FUNCTION [dbo].[Fun_String2ToStringArray](@str NVARCHAR(MAX), @split NVARCHAR(10))
RETURNS @table TABLE (rid INT IDENTITY(1,1) PRIMARY KEY,[item] NVARCHAR(max))
AS
BEGIN
IF LEN(@split) = 0
BEGIN
SET @split = N','
END
DECLARE @xml XML;
SET @xml = CONVERT(XML, '<x><![CDATA[' + replace(CONVERT(VARCHAR(MAX), @str), @split, ']]></x><x><![CDATA[') + ']]></x>')
INSERT INTO @table(item)
SELECT item
FROM (SELECT c.value('text()[1]', 'nvarchar(4000)') [item]
FROM @xml.nodes('/x') t(c)) t
WHERE item IS NOT NULL
RETURN
END
GO
--2.2 查询
;WITH cte AS (
SELECT * FROM t CROSS APPLY [dbo].[Fun_String2ToStringArray](replace(v,'cm',''),'*') AS f
)
SELECT v
,tt.[1] AS [c1]
,tt.[2] AS [c2]
,tt.[3] AS [c3]
FROM cte PIVOT (MAX(item) FOR rid IN([1],[2],[3])) AS tt
/*
v c1 c2 c3
-------------------- ------ ----- ----
37.5*28.2*26.8cm 37.5 28.2 26.8
48.8*18.8*2.1cm 48.8 18.8 2.1
*/
样例 cat demo.txt a b c d e f g ...把一列数据转换成3列;xargs最多支持10列 cat demo.txt | xargs -n3 a b c d e f g h i j k l m n o p q r s t u v w x y z 转载于:https://blog.51cto.com...
如上图,行数是不确定的
处理数据需要将Excel中的一列数据重新排列成若干列,发现直接用excel操作比较复杂,于是用MATLAB实现,顺便复习MATLAB读取excel数据。程序中仅需要参数clm确定需要分成多少列即可。 clc; clear all; filename = '...
项目中遇到一个问题,搜集的数据只有一列,每行的数据都是通过特殊字符分隔,现在需要将其分隔成多个列。 原始数据如下: 0 0 155,NA,0,10,-99999,18,18,18,04,NA,0,-99999... 1 728,NA,24.1,74.81,-9999,18,18,...
转载:... 数据: 结果: ...=OFFSET(A$1,(ROW(1:1)-1)/8,MOD(ROW(8:8),8)) ...java数据根据文件文档或者Api要转成java常量,数据特别多时候。 1将数据cop...
需求:提取数据 说明:原数据是一列多行,需要转化为一行多列 待查询表为:temp_05 hive> desc temp_05; OK data_dt string zhanghao string booking_time_final string sign string hname
1. 读取一列保存为list,项目名称为例: import pandas as pd def excel_one_line_to_list(): df = pd.read_excel("/Users/Devintern/Documents/pachong/ML_flow/pachong/qmp/files/投资事件导出...
先看 原数据如下所示:该数据为一列 第一步定义函数 CREATE FUNCTION dbo.f_GetStr( @s varchar(8000), --包含多个数据项的字符串 @pos int, --要获取的数据项的位置 @split ...
由于最近在做项目的时候,要对数据库中一行很多列个数据进行求和,便在网上查了一下,首先要用到动态SQL语句,动态sql感觉就是类似于拼接sql字符串 动态语句基本语法 1 :普通SQL语句可以用exec执行 Select * ...
pandas处理数据,如何把一列的数据拆分成多列?求大神帮助。
文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储...
--首先,你是按什么规则拆?我举个例子你要按字段中的逗号拆开,假设字段名叫text --用charindex和substring这2个函数 select substring(text,1,charindex(',',text)-1) as [before],substring(text,charindex...
R语言导入csv数据: DATARET = read.csv2("C:\\Users\\Administrator\\Desktop\\data1.csv",encoding = "uft-8") 出现问题如下: 解决方法: DATARET = read.csv2("C:\\Users\\Administrator\\Desktop\\data1.csv...
假设dataframe中有一列数据为如下形式: 需要将YEAR_UNIT_DEPOSIT_PRO这一列的数据按照指定分隔符‘|’拆分为12列,并拼接到原始数据中生成新的dataframe。 方法如下: # 数据拆分、拼接 new_names = ['gjj_...
一 表结构: DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `brands` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL ) ...
缺点:某一列如果为空,另一列不为空,则合并结果是为空,所以在合并之前需要对NA进行预处理,替换或者删除。 注意:如果某一列是非str类型的数据,那么我们需要用到map(str)将那一列数据类型做转换:df["newColumn...
比如我这里又一个字段是name,然后有多行 name 小红 小明 然后我想让小红,小明在一行显示, wm_concat(name) 则显示为 name 小红,小明
选中部分数据区域(多行一列),例如: 转换后: vba代码: Sub oneToMany() Dim TheRng, TempArr Dim i As Integer, j As Integer, colCount As Integer Set Dict = CreateObject("Scripting....
pandas依据多列数据生成某一列数据一、数据修改二、依据多列数据修改某一列 一、数据修改 网上pandas的数据修改大多是依据某一列数据进行修改或者生成了,几乎没有找到依据多列数据生成或者修改某一列的 依据某一列...
Oracle将一列分成多列在Oracle中,我们可以使用listagg(Oracle 11g及以上)将多行合并成中的某一列合并成一列,现在我们的需求是将一列分割成多列。先建立一张表,插入测试数据:CREATE TABLE CELEBRITY( NAME ...
例如表A,有一类型名称为identifier,根据0和1代表不同含义来区分值,比如0代表私有,1代表公有,值存储在name字段里,这时候想获得这样的结果:id, 私有的名字, 共有的名字三列字段,我们可以在查询时候用 IF ...
mysql数据库中如何把多列数据合并成一列?
这是一个csv文件,样例数据如下: cl1 cl2 cl3 1 0 0 0 0 1 ...因为有多个cloumn,1只会在一行中出现一次,想根据1出现的位置得到列名组合成一列 期望结果: cltp cl1 cl3 cl2 python初学,请高手指教~
Excel如何将一列里的内容拆分为多列 如果Excel的表中已经有了内容,这时又需要拆分列,这次介绍的工具可以解决这个问题: 用指定的符号或者字符串,将指定的列拆分为两列或多列,表格其他内容自动移到相应位置。 ...
多行转多列: 要实现该功能pivot行数应该是必不可少吧,下面我就来说说该函数如何使用 局限性:该函数只能针对已知行数要转为几列才能使用,动态行转动态列不支持(个人所知,如可以实现请指教) 用法:pivot( x...
在Spark DataFrame中可以用Pivot函数将多行转成多列。 样本数据 每个用户对每部电影的评分。 数据格式:userID 用户ID,movieID 电影ID,rating评分 15,399,2 15,1401,5 15,1608,4 15,20,4 18,100,3 18,1401,3 18,399...
列变行:将本来在多个列上的数据变成多个行上的数据(竖向为列,横向为行) 如图: 显然对于a的所有成绩,分布在每个列中,如果我想变成如下形式: 由于这里将本来是一行的不同列的数据变成了多行,我个人...
【Pyspark】 一列变多列 分割 一行中的list分割转为多列 explode 官方例子:Pythonpyspark.sql.functions.explode()Examples https://www.programcreek.com/python/example/98237/pyspark.sql.functions.explode...
和mysql的一起对照着看:... 这篇是oracle10g的环境 数据库结构如图: 这里将相同名字的不同分数(不同列)显示在多个行中,形如: sql如下: (select name ,'数学' as type ,math as score from stude
SELECT DISTINCT T.ID, REGEXP_SUBSTR (T.DEPTS, '[^,]+', 1, LEVEL) DEPT FROM VROADWORK_TROADWORKMAIN T CONNECT BY LEVEL <= LENGTH (T.DEPTS) - LENGTH (REPLACE(T.DEPTS, ',', '')) + 1 ...