t-sql заменяют на текстовом поле

Запустить команду Update-Package с помощью консоли диспетчера пакетов

. Это исправит MSB3277, что он переустанавливает все пакеты и все связанные сборки, к которым они приходят, с самой высокой возможной версией. Также возможно обновить только определенный пакет. Или понизите рейтинг после обновления, если захотите, эта исправленная проблема для меня несколько раз пришла. В зависимости от того, сколько пакетов nuget у вас есть, этот процесс может занять несколько минут.

Дополнительная информация о официальных документах https://docs.microsoft.com/en-us/nuget/consume-packages / переустановка-и-обновление-пакеты

29
задан PeteT 20 November 2008 в 02:27
поделиться

5 ответов

Я боюсь, что Вы не можете сделать этого в функции

, Когда Вы пытаетесь объявить функцию как:

create function dbo.textReplace(
@inText as text)
returns text
as 
begin
    return 'a' -- just dummy code
end

Вы получите следующую ошибку:

The text data type is invalid for return values.

, Другими словами, Вы не могли записать простой эквивалент функции ЗАМЕНЫ для типа данных text

3
ответ дан kristof 14 October 2019 в 08:00
поделиться

Необходимо было бы бросить текстовое поле к varchar (8000) или nvarchar (4000), если Вы заменяете по ntext полю.

MyField = ЗАМЕНА (БРОСОК (MyField как VARCHAR (4000)), "string1", "string2")

Это, конечно, будет только работать, если можно гарантировать, что содержание в поле является < = 4000/8000 символы в длине.

1
ответ дан Craig Bovis 14 October 2019 в 08:00
поделиться

Это - мой фрагмент кода для этого сценария:

DECLARE @oldtext    varchar(1000)
DECLARE @newtext    varchar(1000)
DECLARE @textlen    int
DECLARE @ptr        binary(16)
DECLARE @pos        int
DECLARE @id         uniqueidentifier

SET @oldtext = 'oldtext'
SET @newtext = 'newtext'
SET @textlen = LEN(@oldtext)

DECLARE mycursor CURSOR LOCAL FAST_FORWARD
FOR
    SELECT  [UniqueID]
            ,TEXTPTR([Text])
            ,CHARINDEX(@oldtext, [Text]) - 1
    FROM    [dbo].[myTable] 
    WHERE   [Text] LIKE '%' + @oldtext +'%'

OPEN mycursor

FETCH NEXT FROM mycursor into @id, @ptr, @pos

WHILE @@fetch_status = 0
BEGIN   
    UPDATETEXT [dbo].[myTable].Text @ptr @pos @textlen @newtext

    FETCH NEXT FROM mycursor into @id, @ptr, @pos   
END

CLOSE mycursor
DEALLOCATE mycursor
4
ответ дан bitsprint 14 October 2019 в 08:00
поделиться

Вы также можете использовать функцию SUBSTRING (), которая возвращает varchar при передаче текстового значения.

Например:

MyVarchar = SUBSTRING(myTextField, 1, DATALENGTH(myTextField))

Если вы заполняете varchar с определенной длиной, вы можете усечь его, чтобы он соответствовал:

MyVarchar100 = SUBSTRING(myTextField, 1, 100)
1
ответ дан 28 November 2019 в 01:26
поделиться

Вот пример запроса для обновления таблицы с текстовым столбцом с помощью функции REPLACE. Надеюсь, это будет полезно для вас.

UPDATE <Table> set textcolumn=
REPLACE(SUBSTRING(textcolumn,1,DATALENGTH(textcolumn)),'findtext','replacetext') 
WHERE <Condition>
48
ответ дан 28 November 2019 в 01:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: