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