我有一個名為“CustomerId”的列,其值為“1_Nissan_028”和“2_Ferrari_035”。
我想將“Nissan”或“Ferrari”提取為“CustomerName”。CustomerName 位于 CustomerId 的中間,長度不同。
以下 SQL 查詢回傳值,例如“Nissan_”或“Ferrar”。
如何撰寫SQL陳述句?
SELECT cast(
SUBSTRING(
CustomerId,
6,
charindex('_', CustomerId)
) as nvarchar(32)
) as CustomerName
FROM [sales].[CustomerSales]
uj5u.com熱心網友回復:
假設該值始終是第二個分隔值,您可以使用STRING_SPLIT它的ordinal列來實作這一點:
SELECT SS.value AS CustomerName
FROM sales.CustomerSales CS
CROSS APPLY STRING_SPLIT(CS.CustomerId,'_',1) SS
WHERE SS.ordinal = 2;
uj5u.com熱心網友回復:
另一種古怪的做法是使用翻譯
with customersales as (
select '1_Nissan_028' CustomerId union select '2_Ferrari_035'
)
select customerId,
Replace(Translate(customerId, '0123456789','__________'),'_','') CustomerName
from customersales;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486970.html
