SQL Server 2005:charindex начинающий с конца

Да, различие в производительности является значительным. См. статью KB" , Как улучшить выполнение конкатенации строк в Визуальном C#".

я всегда пытался кодировать для ясности сначала, и затем оптимизировать для производительности позже. Это намного легче, чем выполнение его наоборот! Однако видевший огромное различие в производительности в моих приложениях между этими двумя, я теперь думаю об этом немного более тщательно.

К счастью, это относительно просто для выполнения анализа производительности кода для наблюдения, где Вы проводите время, и затем изменить его для использования StringBuilder при необходимости.

13
задан Guillermo Gutiérrez 31 January 2013 в 23:56
поделиться

3 ответа

Что с ним делать ??? Вам нужно захватить символы после последнего появления данного разделителя?

Если да: переверните строку и выполните поиск с использованием обычного CHARINDEX:

declare @test varchar(100)
set @test = 'some.file.name'

declare @reversed varchar(100)
set @reversed = REVERSE(@test)

select 
    REVERSE(SUBSTRING(@reversed, CHARINDEX('.', @reversed)+1, 100))

Вы получите обратно "some.file" - символы до последний "." в исходном имени файла.

В SQL Server напрямую нет "LASTCHARINDEX" или чего-то подобного. То, что вы могли бы подумать о том, чтобы сделать в SQL Server 2005 и новее, - это отличная библиотека расширений .NET и развернуть ее как сборку в SQL Server - T-SQL не очень силен в обработке строк, в то время как .NET действительно так.

23
ответ дан 1 December 2019 в 19:31
поделиться

Это также будет работать:

DECLARE
     @test     VARCHAR(100)

SET @test = 'some.file.name'

SELECT
     LEFT(@test, LEN(@test) - CHARINDEX('.', REVERSE(@test)))
7
ответ дан 1 December 2019 в 19:31
поделиться

Возьмите один ')'

declare @test varchar(100)
set @test = 'some.file.name'
select left(@test,charindex('.',@test)+charindex('.',@test)-1)
1
ответ дан 1 December 2019 в 19:31
поделиться
Другие вопросы по тегам:

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