简体   繁体   English

sql修剪并替换

[英]sql trim and replace

Can i trim and replace at the same time a column's name so i can break it down in two parts? 我可以同时修剪和替换列的名称,以便将其分为两部分吗? The expected result is in nameL and nameR 预期的结果在nameL和nameR中

name        nameL    nameR
AB_1X       AB       1X
AXG_3X      AXG      3X
4G_12X      4G       12X

Tried using this query: 尝试使用此查询:

select *,
RIGHT(name, LEN(name)-4) as nameR,
LEFT(name, LEN(name)-4) as nameL
from myTable

The problem is that it trims like this: 问题是它像这样修剪:

nameL    
AB_
AXG
4G_

same for nameR, because i'm taking a fixed size. 对于nameR也是一样,因为我的尺寸固定。 How can I eliminate "_" and achieve the expected outcome? 如何消除“ _”并达到预期结果? Thank you in advance 先感谢您

Try with combination of substring and charindex functions: 尝试结合使用substringcharindex函数:

DECLARE @t TABLE(name NVARCHAR(10))

INSERT INTO @t VALUES
('AB_1X'),
('AXG_3X'),
('4G_12X')

SELECT name, 
       SUBSTRING(name, 1, CHARINDEX('_', name) - 1) nameL,
       SUBSTRING(name, CHARINDEX('_', name) + 1, LEN(name)) nameR
FROM @t

I assume that there is always underscore symbol in name column. 我假设name列中总是有下划线符号。

You can use: 您可以使用:

SELECT RIGHT(name, LEN(name) - CHARINDEX('_', name)) AS nameR,
    LEFT(name, CHARINDEX('_', name) - 1) AS nameL
FROM myTable

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM