SQL 服务器修剪字符串
SQL server trimming string
我有一个查询,我想 Trim 列并获取唯一的右侧值:
图中的结果类似于 SubAccountCode
和 SubaccountName
,但用户在 SubaccountName
中输入了代码和名称。我想 trim 来自 Subaccountname
的代码并更新 table。 T
下面提到了我尝试过的查询,但我认为它不太有效:
Select Substring(Subaccountname,8,20)as Name from #temp
有几种方法可以做到这一点。
查看示例数据时,最简单的方法是在更新语句中使用 replace()
。
语法:
REPLACE ( string_expression , string_pattern , string_replacement )
示例:
UPDATE table_name
SET column2 = replace([column2], [column1], '')
它的作用是用 column2 中的值更新 column2,其中 column1 中的值被替换为“无”。在您的示例中,这确实会给您留下不需要的 space 。你可以 trim 这个或尝试如下:
UPDATE Test
SET [SubAccountName] = replace([SubAccountName], [SubAccountCode] + ' ', '')
如果 SubAccountCode
可能与 SubAccountName
中的代码不同并且您只想删除前 8 个字符(如果您确定它始终是前 8 个),您可以使用:
UPDATE YourTable SET SubAccountName = RIGHT(SubAccountName, LEN(SubAccountName) - 7)
示例脚本:
create table test (
SubAccountName varchar(100),
SubAccountCode varchar(100)
)
insert into test (SubAccountCode, SubAccountName) VALUES
(1234567, '1234567 AUBC' ),
(1234467, '1234467 AUBC' ),
(1235567, '1235567 AUBC' )
select * from test -- Check that the data is like your example.
UPDATE Test SET SubAccountName = RIGHT(SubAccountName, LEN(SubAccountName) - 8)
select * from test -- Check that the result is like your wanted result.
drop table test -- Cleanup the test table.
此代码适合您。
UPDATE TableName SET SubaccountName = REPLACE(LTRIM(RTRIM(SubaccountName)),LTRIM(RTRIM(SubAccountCode)),'')
我有一个查询,我想 Trim 列并获取唯一的右侧值:
图中的结果类似于 SubAccountCode
和 SubaccountName
,但用户在 SubaccountName
中输入了代码和名称。我想 trim 来自 Subaccountname
的代码并更新 table。 T
下面提到了我尝试过的查询,但我认为它不太有效:
Select Substring(Subaccountname,8,20)as Name from #temp
有几种方法可以做到这一点。
查看示例数据时,最简单的方法是在更新语句中使用 replace()
。
语法:
REPLACE ( string_expression , string_pattern , string_replacement )
示例:
UPDATE table_name
SET column2 = replace([column2], [column1], '')
它的作用是用 column2 中的值更新 column2,其中 column1 中的值被替换为“无”。在您的示例中,这确实会给您留下不需要的 space 。你可以 trim 这个或尝试如下:
UPDATE Test
SET [SubAccountName] = replace([SubAccountName], [SubAccountCode] + ' ', '')
如果 SubAccountCode
可能与 SubAccountName
中的代码不同并且您只想删除前 8 个字符(如果您确定它始终是前 8 个),您可以使用:
UPDATE YourTable SET SubAccountName = RIGHT(SubAccountName, LEN(SubAccountName) - 7)
示例脚本:
create table test (
SubAccountName varchar(100),
SubAccountCode varchar(100)
)
insert into test (SubAccountCode, SubAccountName) VALUES
(1234567, '1234567 AUBC' ),
(1234467, '1234467 AUBC' ),
(1235567, '1235567 AUBC' )
select * from test -- Check that the data is like your example.
UPDATE Test SET SubAccountName = RIGHT(SubAccountName, LEN(SubAccountName) - 8)
select * from test -- Check that the result is like your wanted result.
drop table test -- Cleanup the test table.
此代码适合您。
UPDATE TableName SET SubaccountName = REPLACE(LTRIM(RTRIM(SubaccountName)),LTRIM(RTRIM(SubAccountCode)),'')