none
вывод необходимой части значения поля в запросе RRS feed

  • Вопрос

  • как вывести в представление часть значения поля, откинув определённые символы?
    К примеру, в таблице значение в поле "Бухгалтерский учёт, очное" выкинуть в представление, сократив до значения "Бухгалтерский учёт", откинув, соответственно, ",очное"
    2 ноября 2011 г. 7:43

Ответы

  • declare @str varchar(100) 
    set @str = 'Бухгалтерский учёт, очное"'
    select substring( @str, 0, charindex( ',', @str ) )
    


    http://www.t-sql.ru
    • Помечено в качестве ответа Alex Kuznetsov 2 ноября 2011 г. 8:30
    • Снята пометка об ответе Alex Kuznetsov 2 ноября 2011 г. 8:43
    • Помечено в качестве ответа Alex Kuznetsov 2 ноября 2011 г. 8:53
    2 ноября 2011 г. 8:15
    Отвечающий
  • CREATE VIEW MyView 
     AS
    select MyVal = 
    case when [Специальности].[Название_Спец] like '%(%' 
    then substring([Специальности].[Название_Спец], 0, charindex( '(', [Специальности].[Название_Спец]))
     else substring([Специальности].[Название_Спец], 0, charindex( ',', [Специальности].[Название_Спец]))
    end 
    from [Специальности]
    
    


    http://www.t-sql.ru
    3 ноября 2011 г. 6:43
    Отвечающий

Все ответы

  • declare @str varchar(100) 
    set @str = 'Бухгалтерский учёт, очное"'
    select substring( @str, 0, charindex( ',', @str ) )
    


    http://www.t-sql.ru
    • Помечено в качестве ответа Alex Kuznetsov 2 ноября 2011 г. 8:30
    • Снята пометка об ответе Alex Kuznetsov 2 ноября 2011 г. 8:43
    • Помечено в качестве ответа Alex Kuznetsov 2 ноября 2011 г. 8:53
    2 ноября 2011 г. 8:15
    Отвечающий
  • declare @str varchar(100) 
    set @str = 'Бухгалтерский учёт, очное"'
    select left( @str, charindex( ',', @str ) - 1 )
    


    http://www.t-sql.ru
    2 ноября 2011 г. 8:15
    Отвечающий
  • declare @str varchar(100) 
    set @str = 'Бухгалтерский учёт, очное"'
    select stuff( @str, charindex( ',', @str ), 100, '' )
    


    http://www.t-sql.ru
    2 ноября 2011 г. 8:17
    Отвечающий
  • А если мне нужно откинуть все символы после запятой включительно во всех записях исходной таблицы, то вместо

    set @str = 'Бухгалтерский учёт, очное"'
    нужно написать

    set @str = специальность.название специальности ?

    2 ноября 2011 г. 8:24
  • А если мне нужно откинуть все символы после запятой включительно во всех записях исходной таблицы, то вместо

    set @str = 'Бухгалтерский учёт, очное"'
    нужно написать

    set @str = специальность.название специальности ?


    провести обновление вашей таблицы, через:

    update [Имя вашей таблицы]
    set [Имя колонки, которую парсим] = substring( [Имя колонки, которую парсим], 0, charindex( ',', [Имя колонки, которую парсим] ) )
    


    http://www.t-sql.ru
    2 ноября 2011 г. 8:33
    Отвечающий
  • заменил переменную @str на конкретное поле. Получилось. Вот только не могу понять "принцип работы" это строки:

    select substring( [Специальности].[Название_Спец], 0, charindex( ',', [Специальности].[Название_Спец]) )

     

    2 ноября 2011 г. 8:34
  • провести обновление вашей таблицы, через

    НЕ, мне обновлять таблицу не надо, надо чтобы во вьюхе только заменил... ))
    2 ноября 2011 г. 8:37
  • провести обновление вашей таблицы, через

    НЕ, мне обновлять таблицу не надо, надо чтобы во вьюхе только заменил... ))

    ну тогда достаточно во вью сделать все преобразования
    http://www.t-sql.ru
    2 ноября 2011 г. 8:55
    Отвечающий
  • Помимо указания формы обучения (очное, заочное) у некоторых специальностей указан уровень образования (бакалавр или специалист).

    У бакалавриата в названии специальности добавлено "(бак)", у специалитета ничего не добавлено.

    К примеру,

    Бухучёт, очное                         специалитет

    Бухучёт (бак), заочное             бакалавриат

      

     Задача та же: оставить ТОЛЬКО названия специальностей, отбросив форму обучения (очное или заочное) и уровень образования, где он указан (та самая приписка "(бак)")

      

    Попробовал сделать это следующим образом (код ниже), но выдаётся ошибка "Incorrect syntax near the keyword 'from'."

    В чём проблема? 

     

     

    CREATE VIEW _view1 (спец)

     AS

      select

       case when [Специальности].[Название_Спец] like '%(бак)%'

              then substring([Специальности].[Название_Спец], -6, charindex( ',', [Специальности].[Название_Спец]))

              else substring([Специальности].[Название_Спец], 0, charindex( ',', [Специальности].[Название_Спец]))

     

     from [Специальности]

     

    3 ноября 2011 г. 5:53
  • CREATE VIEW MyView 
     AS
    select MyVal = 
    case when [Специальности].[Название_Спец] like '%(%' 
    then substring([Специальности].[Название_Спец], 0, charindex( '(', [Специальности].[Название_Спец]))
     else substring([Специальности].[Название_Спец], 0, charindex( ',', [Специальности].[Название_Спец]))
    end 
    from [Специальности]
    
    


    http://www.t-sql.ru
    3 ноября 2011 г. 6:43
    Отвечающий
  • Не подходит, т.к. в самом названиии специальности может быть скобка (к примеру, "прикладная информатика (в экономике) (бак), заочное").

    Но ошибку у себя нашёл, банально забыл end в конце case поставить ))

    Теперь код, представленный мной выше, работает.

    Спасибо

    3 ноября 2011 г. 6:54