Удаление подстроки из строки?

У меня есть функция C, которая принимает строку с именем 'buffer' и анализирует ее, она сопоставляет ключевые слова и использует их для присвоения значений в структуре.

Однако некоторые ключевые слова я хочу полностью игнорировать.

Эта программа анализирует файлы VCard (.vcf, виртуальные визитки).

Вот пример буфера строки, который может предоставить:

FN;CHARSET=UTF-8:David Celery

FN - это ключевое слово, которое меня интересует, а Дэвид Селери - это значение, связанное с FN.

Однако CHARSET = UTF-8 - это то, что меня совсем не волнует.

Мой вопрос: Это действительно длинный запрос, и мне приходится писать его динамически, поэтому я создаю переменную с именем @Query и делаю ее типа NVARCHAR (MAX). Итак, я ...

Итак, я пишу хранимую процедуру в MS SQL Server 2008. Это действительно длинный запрос, и мне нужно писать его динамически, поэтому я создаю переменную с именем @Query и сделайте его типом NVARCHAR (MAX) . Мне сказали , что в современных версиях SQL Server NVARCHAR (MAX) может содержать смехотворный объем данных, намного превышающий исходный максимум в 4000 символов. Тем не менее, @Query все еще обрезается до 4000 символов, когда я пытаюсь его распечатать.

DECLARE @Query NVARCHAR(max);
SET @Query = 'SELECT...' -- some of the query gets set here
SET @Query = @Query + '...' -- more query gets added on, etc.

-- later on...
PRINT LEN(@Query) -- Prints out 4273, which is correct as far as I can tell
PRINT @Query      -- Truncates value to 4000 characters
EXEC sp_executesql @Query -- totally crashes due to malformed (truncated) query

Я что-то делаю неправильно, или я совершенно не прав в том, как NVARCHAR (MAX) ] работает?

52
задан Andrew Arnold 28 January 2011 в 12:08
поделиться