問題タブ [informix]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - Oracle SQL - 名前文字列を解析し、最初のイニシャルと姓に変換する
"Smith, John R" という
文字列を "jsmith" という文字列に変換する方法を知っている人はいますか?
lower() ですべてを小文字にする必要が
あります コンマがどこにあるかを見つけて、それが整数の位置の値であることを追跡します
そのコンマの後の最初の文字を取得し、文字列の前に置きます
次に、姓全体を取得し、最初のイニシャルの後に貼り付けます.
補足 - instr() 関数は私のバージョンと互換性がありません
。
database - Informix のデータベース エイリアス
Informix では、他のデータベースを使用する SQL ステートメントを実行できます。
両方のデータベースを「結合」したいのですが、「段階的に」実行したいと思います。
まず、すべてのデータを other_db からメイン データベースに移動し、other_db = main_database というエイリアスを作成します。このようにして、すべてのステートメントから「other_db:」を削除する時間があります。
データベースエイリアスを設定するにはどうすればよいですか?
jdbc - Informix JDBC タイムスタンプ文字列形式
YEAR TO SECOND として定義されたタイムスタンプ フィールドを持つ Informix データベースがあります。JDBC rs.getString(column) を使用してこのフィールドを表示すると、ミリ秒の形式が使用されるため、このフィールドは次のようになります。
YEAR TO SECOND フィールドのみを使用したいと思います。環境変数を設定しました:
しかし、それでも私はミリ秒を得ました。ODBC を使用するプログラムは、ミリ秒を表示しません。TIMESTAMP 文字列「YEAR TO SECOND」のみを受け取るにはどうすればよいですか? 私のプログラムでは、フィールドが TIMESTAMP の場合にメタデータを確認してから「.0」を切り取ることができますが、もっと簡単な方法があるはずです。
サーバーのバージョン: IBM Informix Dynamic Server バージョン 11.50.TC2DE
クライアント バージョン: IBM Informix JDBC Driver for IBM Informix Dynamic Server 3.50.JC3DE
編集 getString() を使用すると、テストした他のすべての JDBC ドライバー (Oracle および PostgreSQL) がタイムスタンプ列をミリ秒単位で表示するようです。そこで、Todd が提案したソリューションを使用しました。metatdata を確認し、列が Timestamp の場合は getTimestamp() を使用してフォーマットします。
informix - Informix には、「マテリアライズド ビュー」と同等のもの、または DB テーブルの同期機能がありますか
質問: Informix には、Oracle の「マテリアライズド ビュー」に相当する構造がありますか? または、DB リンクを介して 2 つのテーブル (DB ではなく) を同期するためのより良い方法はありますか? 同期を自分で作成することもできました (依頼されました) が、それは車輪の再発明のように思えます。
背景:最近、AppServer と DB サーバーの組み合わせでは負荷を処理できなくなったため、モノリシックな Informix 9.30 DB (Valent の MPM) を分割する必要がありました (DB の一部を 1 つのサーバーで、他の部分を別のサーバーで)。
これを行うには、巨大なファクト テーブルと適切に定義されたディメンション テーブルのスター スキーマに配置されたユーザー定義のテーブル スペース (KPI リポジトリ) を分割する必要がありました。
残念ながら、電話会社のマネージャーは、ディメンション テーブル (正規化、データの冗長性、コーディングの必要なし) を 1 台のマシンに集中させ、他のマシンの DB リンクを介してビューとして利用できるようにすることにしました。ビューがサブクエリで使用されている場合(実証可能)、DBサーバーが時々クラッシュするため、これは遅く不安定です。製品サーバーでは非常にクールではありません
sql - SQLnvlと同等-if/caseステートメントなし&isnull&coalesce
SQLにnvl()と同等の関数はありますか?
または、特定のシナリオで同じように使用するのに十分近いものですか?
更新: noif
ステートメントnocase
ステートメント
noisnull
nocolesce
sql - Informix Stored Proc から返されたデータソース
2 つの列と複数の行を返す Informix ストアド プロシージャがあります。「EXECUTE FUNCTION curr_sess(2009,'SP')」は問題なく使用できますが、結果を一時テーブルに取得するにはどうすればよいですか。
編集: バージョン 10.00.HC5 を使用しています
Jonathan Leffler のアイデアをテストしてもうまくいきませんでした。
正常に動作します。それから私はやった
でもやってみると
うまくいきません。「SPL ルーチンの不正な SQL ステートメント」というメッセージが表示されます。エラー。
curr_sess のソース
編集: sess_sort() はルックアップを行います。
関数を 1 つのクエリとして書き直そうとしました。ここに next_sess があります:
IBM の誰かが私に電子メールを送り、次のようなものを使用することを提案しました。
しかし、それでもうまくいきませんでした。
jdbc - JDBC および ODBC を使用して Informix データベースに TEXT 列を挿入する一貫した方法
JDBC 経由で Informix TEXT 列にデータを挿入しようとすると問題が発生します。ODBC では、次のように単純に SQL を実行できます。
しかし、これはJDBCでは機能せず、エラーが発生しました:
そのような問題を検索したところ、2003 年からのメッセージが見つかりました。
PreparedStatement を使用するようにコードを変更しました。現在は JDBC で動作しますが、ODBC で PreparedStatement を使用しようとするとエラーが発生しました:
テスト テーブルは次のように作成されました。
両方のドライバーをテストするための Jython コード:
JDBC または ODBC で、両方のドライバーに対して 1 つのバージョンのコードを使用するための設定はありますか?
バージョン情報:
- サーバー: IBM Informix Dynamic Server バージョン 11.50.TC2DE
- クライアント:
- ODBC ドライバー 3.50.TC3DE
- IBM Informix Dynamic Server 3.50.JC3DE 用の IBM Informix JDBC ドライバ
sql - 分析クエリ
テーブル内の次の情報を変換できる単一のクエリを探しています
このようなものに (クエリ期間として午前 10 時から午前 10 時 15 分までの時間範囲を指定)
これはSQLを使用してのみ行うことができますか? Informix バージョン 11.5 を使用しています