2014-12-09 2 views
-2

Таблица Parameter содержит столбец SerialNumber. Значение SerialNumber имеет префикс с номером 99. Образец: 99064960.Сценарий T-sql для замены первых двух чисел в строке

Table.Parameter 
------------- 
[ParameterID] [int] IDENTITY(1,1) NOT NULL, 
[SerialNumber] [varchar](10) NULL, 

Я хотел бы написать сценарий для замены 99 на 88 на всех строках.

Ожидаемый результат: 88064960.

С помощью следующего утверждения проблема была решена, но был задан вопрос, чтобы объединить эти функции в один оператор.

UPDATE table 
SET SerialNumber = SUBSTRING(SerialNumber, 3, LEN(SerialNumber)-2) 
WHERE ID IN () 

Эта строка затем добавляется префикс:

update table 
set SerialNumber = '88' + SerialNumber 
where ID in () 

Спасибо.

+0

Несколько попыток и исследования просто не хотят тратить время форумов с тонной текста, который отвлекается от фактического вопроса спрашивает. Вопросы по стеку проголосовали за слишком текст текста. Приветствия. –

+1

Вопросы будут слишком много * нерелевантными * текст получает downvoted. Нет такой вещи, как слишком много деталей. –

+0

Понял спасибо. В интересах ясности мои исследования были добавлены. –

ответ

4

Как об этом:

UPDATE mytable 
SET field = '88' + SUBSTRING(field, 3) 
WHERE SUBSTRING(field, 1, 2) = '99' 
+0

Спасибо, помогли, после успешного выполнения. ОБНОВЛЕНИЕ таблица SET SerialNumber = SUBSTRING (SerialNumber, 3, LEN (SerialNumber) -2) WHERE ID IN() таблица обновление набор SerialNumber = 'FA' + SerialNumber WHERE ID IN() –

0

Вы можете сделать это:

DECLARE @str VARCHAR(100) 
SET @str='99064960' 
SELECT 
    CASE 
     WHEN LEFT(@str,2)='99' 
     THEN '88'+SUBSTRING(@str,3,LEN(@str)) 
     ELSE @str 
    END 

В заявлении, как это обновление:

UPDATE Table1 
SET theString='88'+SUBSTRING(@str,3,LEN(@str)) 
WHERE LEFT(Table1.theString,2)='99' 

Ссылка: