Строка обрезки SQL-сервера - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть запрос, я хочу обрезать столбец и получить только значения справа:

enter image description here

Здесь на рисунке результаткак SubAccountCode и SubaccountName, но пользователь ввел код и имя в SubaccountName.Я хочу обрезать коды с Subaccountname и обновить таблицу.T

Запрос, который я пробовал, упоминается ниже, но я думаю, что он не работает:

 Select Substring(Subaccountname,8,20)as Name from #temp

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Этот код будет работать для вас.

UPDATE TableName SET SubaccountName = REPLACE(LTRIM(RTRIM(SubaccountName)),LTRIM(RTRIM(SubAccountCode)),'')
0 голосов
/ 19 сентября 2018

Есть несколько способов сделать это.При просмотре данных в качестве примера проще всего было бы использовать replace() в операторе обновления.

Синтаксис: REPLACE ( string_expression , string_pattern , string_replacement )

Пример:

UPDATE table_name
SET column2 = replace([column2], [column1], '')

Чтоэто обновляет column2 значением из column2, где значение column1 заменяется на 'Ничего.В вашем примере это оставляет нежелательное пространство впереди.Вы можете обрезать это или попробовать следующее:

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.
...