我在表1中列出了列和类似的数据

columnA
U001.C18754

我想用2个新的专栏clumnB和columnC来分解(.)数据间隔时间

columnA      columnB    columnC
U001.C18754  U001       C18754

我的密码

Select
     a.columnA
     ,b.columnB
     ,b.columnC
   
       
 From table1 a
 Cross Apply (
                Select columnA = xDim.value('/x[2]','varchar(50)') 
                                ,columnB = xDim.value('/x[3]','varchar(50)')
                                ,columnC = xDim.value('/x[4]','varchar(50)')
                    From  ( values (cast('<x>' + replace(varstring,'.','</x><x>')+'</x>' as xml)))  A(xDim)
                                ) b

我收到一个错误,列名称"varString"无效

推荐答案

如果小于4个段,您可能需要考虑parsename()

Example

Declare @YourTable Table ([columnA] varchar(50))  Insert Into @YourTable Values 
 ('U001.C18754')
 
Select *
      ,columnB = parsename(columnA,2)
      ,columnC = parsename(columnA,1)
 from @YourTable

Results

columnA     columnB columnC
U001.C18754 U001    C18754

编辑-更新XML

Select a.columnA
      ,b.columnB
      ,b.columnC
 From @YourTable a
 Cross Apply (
                Select columnB = xDim.value('/x[1]','varchar(50)')
                      ,columnC = xDim.value('/x[2]','varchar(50)')
                  From  ( values (cast('<x>' + replace(columnA,'.','</x><x>')+'</x>' as xml))) as A(xDim)
             ) b

Sql相关问答推荐

JSON列之间的Postgr聚合

如何转换和汇总行数

如何在SQL Server中统计按备注分组的记录数

如果多行科目有一行在指定的日期范围内,如何 Select 该科目在该日期之前的所有行?

在MS Access Modern图表的X轴上显示时间值时遇到问题

在Postgres中合并相似的表

在SQL GROUP BY中的某些行之后执行计算

对于多字节字符,SQL Server中的DATALENGTH返回1字节

明细表中没有记录如何更新主表的值为0

Postgres SQL查询从字符串中获取邮箱地址

将二维数组的第一个和第二个元素取消嵌套到两个一维数组中

统计重复记录的总数

POSTGRES to_timestamp() 假定 UTC 字符串为本地时间

我可以在 T-SQL (SQL Server) 的函数内使用 OPTION 子句吗?

SQL for Smarties 类型问题:从表中 Select 记录,并对某些值进行分组

SQL 多个不满足的条件失败

将表格和字符串连接以 for each 记录生成订单项目

如何在插入时将字符串'03-January-2023'转换为日期时间

在 SQL 的每行选项中 Select 最大值

当计数为 0 时显示行