質問
SQL ビューで REPLACE を使用して、プロパティ番号からスペースを削除しています。関数は REPLACE(pin, ' ', '') のように設定します。グリーン スクリーンでは、クエリは正常に見えました。それ以外の場合は、フィールド内の文字の 16 進値を取得します。エンコードの問題だと思いますが、どうすれば修正できますか?
ビューの作成に使用したステートメントは次のとおりです。
CREATE VIEW RLIC2GIS AS SELECT REPLACE(RCAPIN, ' ', '') AS
RCAPIN13 , RLICNO, RONAME, ROADR1, ROADR2, ROCITY, ROSTAT, ROZIP1,
ROZIP2, RGRID, RRADR1, RRADR2, RANAME, RAADR1, RAADR2, RACITY,
RASTAT, RAZIP1, RAZIP2, REGRES, RPENDI, RBLDGT, ROWNOC, RRCODE,
RROOMS, RUNITS, RTUNIT, RPAID, RAMTPD, RMDYPD, RRFUSE, RNUMCP,
RDATCP, RINSP, RCAUKY, RCAPIN, RAMTYR, RYREXP, RDELET, RVARIA,
RMDYIN, RDTLKI, ROPHN1, ROPHN2, ROCOM1, ROCOM2, RAPHN1, RAPHN2,
RACOM1, RACOM2, RNOTES FROM RLIC2
アップデート:以下に答えを投稿しました。
解決
最終的には concat と substring を使用して、必要な結果を得ることができました。
CREATE VIEW RLIC2GIS AS
SELECT CONCAT(SUBSTR(RCAPIN,1,3),CONCAT(SUBSTR(RCAPIN,5,2),
CONCAT(SUBSTR(RCAPIN,8,2), CONCAT(SUBSTR(RCAPIN,11,3),
SUBSTR(RCAPIN, 15,3))))) AS CAPIN13, RLICNO, RONAME, ROADR1,
ROADR2, ROCITY, ROSTAT, ROZIP1, ROZIP2, RGRID, RRADR1, RRADR2,
RANAME, RAADR1, RAADR2, RACITY, RASTAT, RAZIP1, RAZIP2, REGRES,
RPENDI, RBLDGT, ROWNOC, RRCODE, RROOMS, RUNITS, RTUNIT, RPAID,
RAMTPD, RMDYPD, RRFUSE, RNUMCP, RDATCP, RINSP, RCAUKY, RCAPIN,
RAMTYR, RYREXP, RDELET, RVARIA, RMDYIN, RDTLKI, ROPHN1, ROPHN2,
ROCOM1, ROCOM2, RAPHN1, RAPHN2, RACOM1, RACOM2, RNOTES FROM RLIC2
他のヒント
ここでの問題は、そのフィールドの空白文字だと思っているものが、実際には別の印刷できない文字である可能性があります。
次の SQL を使用すると、4 番目の位置にある ASCII 文字を確認できます。
select ascii(substr(RCAPIN,4,1))
FROM YOUR-TABLE
そうすれば、空白スペースの代わりにその文字に置換を使用できるようになります。
select replace(RCAPIN,chr(9))
FROM YOUR-TABLE
空の文字列ではなく NULL を使用してみてください。つまりREPLACE(RCAPIN, ' ', NULL)
所属していません StackOverflow