Сочетание клавиш для автоматического переноса выделенного текста в IsNull ([текст], 0) в SSMS

Есть ли способ иметь ярлык в SQL Server Management Studio (SSMS), который при выделении текста переносит этот текст в оператор IsNull ()?

Например, я выделяю текст ниже:

My_column_name

и когда я нажимаю комбинацию клавиш, то, что было выделено, превращается в:

IsNull(My_column_name, 0)

Я использую SSMS v17.4


person David Maddox    schedule 14.06.2019    source источник
comment
AFAIK нет возможности сделать это с помощью собственного SSMS. Эта функция может быть в некоторых сторонних расширениях, но я о них не знаю. Это довольно специфическое правило. Если у вас включен intellisense, вам не нужно больше набирать его, а можно придумать какую-нибудь настраиваемую комбинацию горячих клавиш.   -  person Sean Lange    schedule 14.06.2019
comment
Если у вас есть что-то вроде запроса SQL, вы можете настроить для этого фрагмент кода, но это не является чем-то родным для SSMS.   -  person Larnu    schedule 14.06.2019
comment
Хотя нет ничего родного, здесь есть несколько альтернативных предложений: stackoverflow.com/questions/647594/   -  person Doug Deden    schedule 15.06.2019


Ответы (2)


Вы можете сделать это с помощью сниппетов. Это не совсем простой ярлык, но несколько нажатий клавиш приведут вас туда.

Сначала вам нужно создать такой сниппет:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>ISNULL</Title>
            <Shortcut></Shortcut>
            <Description>Inserts ISNULL function</Description>
            <Author>Luis Cazares</Author>
            <SnippetTypes>
                <SnippetType>SurroundsWith</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
        <Declarations>
        </Declarations>
        <Code Language="SQL"><![CDATA[ISNULL( $end$$selected$, 0)]]>
        </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

Сохраните его как .snippet файл и сохраните его в папке, предназначенной для фрагментов. Вы можете использовать тот, который установлен по умолчанию. Чтобы узнать, какая папка используется по умолчанию или добавить другую папку, перейдите к Code Snippets Manager в меню «Инструменты» для SSMS.

Как только ваш фрагмент окажется в зарегистрированном месте, выберите код, нажмите Ctrl+K,Ctrl+S, и появится контекстное меню фрагментов. Вы можете пройти по нему, начав вводить имя папки и фрагмента и нажимая Enter или Right, когда попадаете туда.

Для коротких фрагментов это, вероятно, не стоит, но для более крупных это потрясающе. Я написал более подробное объяснение здесь.

person Luis Cazares    schedule 14.06.2019

Возможно, я нашел способ. В каталоге C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio\SQL\Snippets\1033\Function (измените его в соответствии с вашей установкой) я скопировал файл Begin End.snippet, назвал копию IsNull.snippet и изменил новый файл. Я изменился:

BEGIN

$selected$ $end$

END

To:

IsNull($selected$ $end$, 0)

(Я также изменил теги Title, Description и Author - делайте с ними все, что хотите.)

Затем в SSMS я использовал Tools -> Code Snippets Manager для импорта нового фрагмента. Теперь, когда в окне запроса выбрано My_column_name, я могу использовать Ctrl + K, Ctrl + S, Down, Down, Enter, Down, Enter, чтобы применить новый фрагмент.

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

person Doug Deden    schedule 14.06.2019
comment
Забавно, что мы почти одновременно опубликовали ответ на ту же тему. То же решение, но с другим объяснением. - person Luis Cazares; 17.06.2019