【SQL SERVER】 CASE文の使い方

CASE 文を使って結果を分岐させて取得する SQL 文の備忘録です。
CASE 式によって、SQL 文で if-then-else の機能を実装できます。

CASE文は、一連の条件を評価して、考えられる結果式のうちの 1 つを返します。
CASE 式には 2 つの形式があります。
 単純 CASE 式では、1 つの式を一連の単純式と比較して結果を決定します。
 検索 CASE 式では、一連のブール式を評価して結果を判定します。
どちらの形式も、ELSE 引数 (省略可) をサポートしています。
CASE は、有効な式を使用できる任意のステートメントや句で使用できます。 たとえば、SELECT、UPDATE、DELETE、SET などのステートメントや、select_list、IN、WHERE、ORDER BY、HAVING などの句で使用できます。

簡単な例を記述します。

declare @tbl1 table(a_cd char(9), b_kbn char(1), c_kbn int)
insert into @tbl1 (a_cd,b_kbn,c_kbn) values ('000000001','1',0)
insert into @tbl1 (a_cd,b_kbn,c_kbn) values ('000000010','1',1)
insert into @tbl1 (a_cd,b_kbn,c_kbn) values ('000000020','2',1)
insert into @tbl1 (a_cd,b_kbn,c_kbn) values ('000000030','2',1)
 
select * from @tbl1

--例1 単純 CASE 式
select a_cd,
    case b_kbn when '1' then 'OK' when '2' then 'NG' else '-' end as 判定
from
    @tbl1

--例2 検索 CASE 式
select a_cd,
	case
		when b_kbn = '1' OR c_kbn = '0' then 'OK1'
		when b_kbn = '1' OR c_kbn = '1' then 'OK2'
		when b_kbn = '2' OR c_kbn = '0' then 'NG1'
		when b_kbn = '2' OR c_kbn = '1' then 'NG2'
		else '-' 
	end as 判定
from @tbl1

ちなみに、合致する条件がなく、 else の指定もなければ、 CASE 式は null を返します。
以上、 CASE 文を使って結果を分岐させて取得する SQL 文の備忘録でした。

IX Web Hosting SSLを設定する(初回設定)

IX Web Hosting SSLを設定する(初回設定)

IX Web Hostingを利用し始めて2週間が経過しています。
今のところ全く問題なく稼働しており、安心しています。
何しろ安くあげるために、3年契約にしてしまい、問題が発生したらどうしよ~(´;ω;`)の状態なので。。。
ちなみに、費用は格安で3年間で2万円を少し切る程度です。為替レート次第で多少上下すると思いますが。

話を戻して、私の契約したIX Web Hostingは「Business Plus (Win)」というプランで、固定アドレスが3個無料で付いてきます。
これが一番の目当てで契約したので、本当は一つ上の「Unlimited Pro (Win)」というプランが固定アドレスが15個も付いてくるのでこれにしたかったのですが、まぁ、たぶん使わないかなって思って。

で、Let’s Encryptからもらえる無料のSSL証明書を使い、独自ドメインのSSLを設定したので、その開発備忘録です。
他のSSLベンダーからの証明書も同様にしてできるのでこの手順で問題ないと思います。

まず、IX Web HostingのHome画面から「Web Options」を選択します。

IX Web Hosting SSL設定 home画面

IX Web Hosting SSL設定 home画面

次に、「Select domain to configure hosting parameters」リストが表示されるので、SSLを設定したいドメインもしくはサブドメインを選択します。

IXWebhostingSSL設定 Select domain to configure hosting parameters

IXWebhostingSSL設定
Select domain to configure hosting parameters

次に、「Web Service」設定画面が表示されるので、「SSL Support」項目の「Import SSL Certificate」を選択します。
一度設定していると、「Edit」を選択することになります。
ここで、SSL証明書をもっておらずIX Web Hostingで契約して作成する場合はその下の項目を選択すれば良いと思います。

IXWebhostingSSL設定-Web Service設定画面

IXWebhostingSSL設定-Web Service設定画面

次に、「NEW SSL Support」画面が表示されます。

IXWebhostingSSL設定-SSL鍵情報登録

IXWebhostingSSL設定-SSL鍵情報登録

次に、予め入手しておいたSSL証明書の秘密鍵(SSL Server Private Key)とSSL Certificate(CERT/SSL証明書)をコピーして貼り付け、送信します。

IXWebhostingSSL設定-SSL Certificate情報送信

IXWebhostingSSL設定-SSL Certificate情報送信

正常に処理されると、ひとつ前の「Web Service」設定画面に戻ります。
エラーが出た場合はコピーミスかコピーした情報に間違いが有ると思われるので、エラーメッセージを確認してみてください。
正常に処理されると、下のようになります。

IXWebhostingSSL設定-SSL設定後

IXWebhostingSSL設定-SSL設定後

これで、https://でアクセスすると保護された通信になります。
ただ、更に「Edit」で「Force SSL Connection」にしても全てがHttps://になりません。
課題が残っていますが、とりあえず使えるようになったのでこれで良しとします。
リダイレクトで http ⇒ https にする方が良い気がしますし。

以上、IX Web Hosting SSLを設定する(初回設定)の開発備忘録でした。

参考までに
IX Web Hosting SSLを設定する(更新)
Let’s Encryptで無料のSSLを取得する
DNS TXTレコード確認

DNS TXTレコード確認

DNS TXTレコード確認する方法の備忘録です。

経緯は、Let’s Encryptという無料のSSLの証明書を使用しています。
機関が3か月と短いですが、独自ドメインでSSLが無料で使用できるので助かります。

で、Let’s Encryptの証明書発行に一度失敗してしまい、以来ずっと認証でつまづいています。

まず環境ですが、Let’s Encryptの証明書発行スタードメインを契約しているので、そこから発行してもらっています。
ドメインの所有者確認は、DNS認証とWeb認証があります。
で、DNS認証をしたいので、DNSにTXTレコードを追加して「所有者確認」をしてもらっています。

他でもサイトの所有証明やドメインの所有証明でDNSにTETレコードを追加する機会も多いと思います。
最初にミスをしなければ問題なく認証されると思うのですが、一度失敗すると問い合わせサーバ等に記憶が残ってしまい直ぐに再実行しても正しい内容が取得できないケースが出てきます。

で、DNS TXTレコード確認する方法ですが、
nslookup -q=txt hostname

例)itsys.co.jpのDNSに以下のTXTレコードを追加
  _acme-challenge.itsys.co.jp TXT=ua_Jb9fkiajHyFxia8TI9WDnMquwxHxly6dQlLOS8g0

  コマンド
  nslookup -q=txt _acme-challenge.itsys.co.jp

  結果
  _acme-challenge.itsys.co.jp text = “ua_Jb9fkiajHyFxia8TI9WDnMquwxHxly6dQlLOS8g0”

となります。
レコードが正常に登録されていないと「_acme-challenge.itsys.co.jp を見つけられません: Non-existent domain」
などとなります。

以上、極たまにしか確認しないので忘れてしまうため、DNS TXTレコード確認する方法の備忘録を残しておきます。