概要
フラグを1,0で管理している項目を、
ASP.NET のGridView のチェックボックスにそのまま読み込もうとしたら、
True,False で判定できずにエラーで落ちました。
対応として、
無理やりSQLサーバ 側でTRUE,FALSEの文字列を返すようにしました。
サーバ構成:
Windows Server
ASP.NET (VB.NET、ODBC接続)
Postgresql
経緯
Google先生に聞いてみると、
REPLACEとか、Translateとかあったけど、自分の環境ではうまく動きませんでした。
何かの設定かもしれないけど、ODBC接続していて、ODBCで使えるスカラ関数の一覧を
見つけることができず、賢いやり方は諦めて、、、
えいやっとPostgreSQLに関数自作して対応しちゃったYOO
ソース
関数の作成内容(IS_TRUE)
/*------------------------------------------------------------*
* IS_TRUE
*
* 1だったらTrueの文字列を返し、それ以外はFalseを返す関数。
*
* 2013 KurokoSin
*------------------------------------------------------------*/
DROP FUNCTION IS_TRUE( BIGINT );
CREATE FUNCTION IS_TRUE( BIGINT ) RETURNS VARCHAR AS '
DECLARE
is_one ALIAS FOR $1;
rtn VARCHAR(5);
BEGIN
rtn = FALSE::varchar;
IF (is_one IS NOT NULL and is_one = 1) THEN
rtn = TRUE::varchar;
END IF;
RETURN rtn;
END;
' LANGUAGE 'plpgsql';
使い方
select IS_true(h.fugafuga)
from hogehoge h
;
標準の関数とか、もっといいやり方があれば教えて下さい。