SQL中的裁剪字符串

SQL中的裁剪字符串,sql,sql-server,Sql,Sql Server,我想将一列转换为两列,并向第一列发送一个数字符号, (1,2,3…)从父列和字符到第二列。在SQL Server中仅使用查询 +-------+ | place | +-------+ | 1a | | 2a | | 4c | | 4b | | 2d | | 2c | | 1d | | 1a | | 1b | | 3c | +-------+ 期望输出 +------+------+ | col1 | col2 | +------+-

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

+-------+
| place |
+-------+
| 1a    |
| 2a    |
| 4c    |
| 4b    |
| 2d    |
| 2c    |
| 1d    |
| 1a    |
| 1b    |
| 3c    |
+-------+
期望输出

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

如果数字部分总是第一个,那么通过使用,您可以得到最后一个数字的索引,然后只需使用and(如@Larnu所建议的)


欢迎来到堆栈溢出!请熟悉这本书。这个网站是为了帮助你调试问题,但是你的问题似乎更像是“有人为我写代码”。此外,您的问题应该是可以解决的,而不需要依赖任何外部资源(如imgur)。您可以编辑您的问题以解决这些问题,否则您将面临关闭问题的风险。请查看和。如果你有困难,用你尝试过的内容编辑你的文章。
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