2017-12-12 13 views
-4

2つの列を1つに変換し、親列からcharへの最初の数字記号
(1,2,3 ...)を送信したい数字の部分は、常に最初のものである場合PATINDEXを使用して、その後、SQL ServerのSQL内の文字列

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

所望の出力

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

ようこそスタックオーバーフロー! [投稿ルール](https://stackoverflow.com/help/on-topic)に慣れてください。このウェブサイトは問題のデバッグを支援するためのものですが、あなたの質問は*「誰かが私のコードを書いてください」*の行に沿っているようです。さらに、あなたの質問は外部リソース*(imgurのようなもの)に頼ることなく解決可能でなければなりません。これらの問題を解決するために質問を編集することができます。そうしないと、問題を解決するリスクがあります。 – Santi

+2

['LEFT'](https://docs.microsoft.com/en-us/sql/t-sql/functions/left-transact-sql)と[' RIGHT'](https:// docs.microsoft.com/en-us/sql/t-sql/functions/right-transact-sql)を参照してください。あなたが苦労している場合は、あなたが試したもの**で投稿を編集してください。 – Larnu

答えて

0

にのみクエリを使用すると、最後の数字のインデックスを取得し、その後ちょうどLEFTを使用することができますとRIGHT(@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