読者です 読者をやめる 読者になる 読者になる

都内で働くSEの技術的なひとりごと

都内でサラリーマンやってます。マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。よろしくお願いします♪

インフルエンザの症状もほぼなくなり、熱も36度台に下がったので SQL Server v.Next CTP1.1 の情報を見てみる

SQL Server SQL Server v.Next

 世の中はすっかり Xmas ムードの真っ只中、自分にはインフルエンザをプレゼントされましたwww ようやく体調が回復したのは、クリスマスイブ。今年の Xmas はまったくついていません。しかし、そんなことには少しもめげず、クリスマスといえども記事を書きます。

 今回は、SQL Server v.Next で新しく追加された三つの関数を試してみます。まず一つ目は、TRIM です。これは長らく対応が待たれていたものではないでしょうか? RTRIM と LTRIM の組み合わせで何回も記述するのが面倒なので、関数を作成した方も多かったかと思います。(私もその一人。)
ryuchan.hatenablog.com

 二つ目は、CONCAT_WS です。これも個人的には欲しかった関数です。v.Next 以前のバージョンでは、各列をカンマで連結するのも下記のようにクエリを書く必要がありました。列数が多いと見た目も非常に悪いですね。

SELECT
    CONCAT(BusinessEntityID, ',', PersonType, ',', NameStyle, ',', Title, ',', FirstName, ',', MiddleName, ',', LastName, ',', Suffix, ',', EmailPromotion)
FROM
    Person.Person
WHERE
    BusinessEntityID = 1

 CONCAT_WS を使用すると、下記の通りスッキリ記述することができます。

SELECT
    CONCAT_WS(',', BusinessEntityID, PersonType, NameStyle, Title, FirstName,  MiddleName, LastName, Suffix, EmailPromotion)
FROM
    Person.Person
WHERE
    BusinessEntityID = 1

 三つ目は、TRANSLATE です。例えば、2*[3+4]/{7-2} という式を 2*(3+4)/(7-2) に変更する場合、どのようなクエリを記述するでしょうか?おそらく下記のようになるかと思います。(このような記述意外としてる方多いと思います。自分のまわりにも...)

SELECT REPLACE(REPLACE(REPLACE(REPLACE('2*[3+4]/{7-2}','[','('), ']', ')'), '{', '('), '}', ')')

 上記のクエリを TRANSLATE を使用すると、下記のように記述できます。こちらも同様スッキリ記述できます。

SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()')

 v.Next でいい関数が追加されていますね。クエリが美しくなる機能追加は良いことです。

インフルエンザで体の節々に痛みがあったけど、今回はバファリンが結構効いた。

【指定第2類医薬品】バファリンA 80錠

【指定第2類医薬品】バファリンA 80錠

プレミアムとかあるのか。

【指定第2類医薬品】バファリンプレミアム 40錠

【指定第2類医薬品】バファリンプレミアム 40錠