Я не совсем понимаю, что вы пытаетесь достичь (например, что вы хотите заменить "field_1 = 300", и это именно та строка "field_1 = 300", которую вы ищете,или просто имя поля, то есть "field_1"?).
Кроме того, не могли бы вы вставить код, который вы написали до сих пор?
Вот простой скрипт, который будет извлекать текущее значениес заданным именем поля:
DECLARE @str VARCHAR(100),
@str_tmp VARCHAR(100),
@field_pattern VARCHAR(10),
@field_val INT;
SET @str = 'fieldA=23 OR field_1=300 OR fieldB=4';
SET @field_pattern = 'field_1='
-- This part will extract the current value assigned to the "@field_pattern" field
IF CHARINDEX(@field_pattern, @str) > 0
BEGIN
SELECT @str_tmp = SUBSTRING(@str,
CHARINDEX(@field_pattern, @str) + LEN(@field_pattern),
LEN(@str)
);
SELECT @field_val = CAST(SUBSTRING(@str_tmp, 1, CHARINDEX(' ', @str_tmp)-1) AS INT);
END
PRINT @field_val
Если вы хотите заменить само значение (например, заменить «300» в данном случае на «600»), вы можете добавить что-то вроде этого:
DECLARE @new_val INT;
SET @new_val = 600;
SET @str = REPLACE(@str, (@field_pattern+CAST(@field_val AS VARCHAR)), (@field_pattern+CAST(@new_val AS VARCHAR)));
PRINT @str;
Что даст вам "fieldA=23 OR field_1=600 OR fieldB=4
".
Приветствия, Дейв