我有一個包含字串地址的表。我想選擇特定格式的列文本。但是,該列包含不同的格式并且需要不同的規則。例如,如果該列包含諸如“SHOP”之類的詞,它將選擇以“SHOP”開頭的詞。如果該列包含像“BOX”這樣的詞,它會選擇“BOX”之后的詞。
表A
| columna | address |
--------- ------------------
| a1234 | ddsa SHOP LG123 |
| 4322 | SADA BOX 12-42 |
| 4632 | 123123 ADV 2313 |
我想要這樣的東西:按同一列中不同規則中的不同條件進行選擇。
SELECT
ta.columna,
if CHARINDEX('SHOP',ta.address) > 0
RIGHT(ta.address, len(ta.address) - charindex('SHOP', ta.address) 1) AS unit_addr,
if CHARINDEX('BOX',ta.address) > 0
RIGHT(ta.address, len(ta.address) - charindex('BOX', ta.address)-8) AS unit_addr,
if CHARINDEX('ADV',ta.address) > 0
RIGHT(ta.address, charindex('ADV', ta.address)-3) AS unit_addr
FROM
tableA ta
所以輸出應該是這樣的:
| columna | address |
--------- ----------------
| a1234 | SHOP LG123 |
| 4322 | 12-42 |
| 4632 | 2313 |
uj5u.com熱心網友回復:
您需要使用 Case 運算式。假設上面的邏輯滿足您的需求,這種事情應該以您想要的結構提供結果......
select ta.columna,
case
when CHARINDEX('SHOP',ta.address) > 0 then
RIGHT(ta.address, len(ta.address) - charindex('SHOP', ta.address) 1)
when CHARINDEX('LIGHTBOX',ta.address) > 0 then
RIGHT(ta.address, len(ta.address) - charindex('LIGHTBOX', ta.address)-8)
when CHARINDEX('ADV',ta.address) > 0 then
RIGHT(ta.address, charindex('ADV', ta.address)-3)
end as address
from tablea ta
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/357304.html
標籤:sql sql-server 查询语句 选择 字符索引
