在SQL中裁剪字符串

时间:2017-12-12 18:03:52

标签: sql sql-server

我想将一列转换为两列,并首先发送一个数字符号,
(1,2,3 ......)从父列和char到第二个。仅在SQL Server中使用查询

+-------+
| place |
+-------+
| 1a    |
| 2a    |
| 4c    |
| 4b    |
| 2d    |
| 2c    |
| 1d    |
| 1a    |
| 1b    |
| 3c    |
+-------+

期望输出

+------+------+
| col1 | col2 |
+------+------+
|    2 | a    |
|    3 | b    |
| ...  | ...  |
+------+------+

1 个答案:

答案 0 :(得分:0)

如果数字部分始终是第一个,那么使用PATINDEX可以获得最后一个数字的索引,之后只需使用LEFTRIGHT(由@建议) Larnu)

declare @tbl as table (
    place varchar(5)
)

insert into @tbl values ('1a'), ('2b'), ('4c'), ('5e'), ('27gg')

select
    LEFT(place, PATINDEX('%[0-9][^0-9]%', place)) as col1
    ,RIGHT(place, LEN(place) - PATINDEX('%[0-9][^0-9]%', place)) as col2
from @tbl