Knowledge Base Archive
この記事は Chinoba Knowledge Base の技術アーカイブです。
Chinoba.orgを見る →
人工知能技術 セマンティックウェブ技術 オントロジー技術 検索技術 データベース技術 デジタルトランスフォーメーション技術 Visualization & UX ワークフロー&サービス. プログラミング Clojure データベース技術
Clojureでデータベースにアクセスする際に、SQL等のクエリ文の一部を変数とするとフレキシブルなデータベースアクセスが実現できる。それを美しく実現するのが「format関数」だ。基本的な使い方としては以下のようなものとなる。
user=> (format "Hello there, %s" "bob")
"Hello there, bob"
%sはstring変数を表し、数字の場合は%dや%o,%xを使い分ける。これを例えばSQLのDBにアクセスする場合は
(defn db-query [q1 q2]
(jdbc/query db-spec
(format "select %s from member where id = %s" q1 q2))
とすると、q1で出力を、q2でidを変数として扱う関数に変換できる。
また、結果をtextの中に代入して出力する場合にも便利だ
(defn output-text [x] (format "今回の結果は%sです。" x)
また、数字の出力の場合は以下のように変数の指定で変形もできる。
user=> (format "%5d" 3)
" 3"
user=> (format "Pad with leading zeros %07d" 5432)
"Pad with leading zeros 0005432"
user=> (format "Left justified :%-7d:" 5432)
"Left justified :5432 :"
user=> (format "Locale-specific group separators %,12d" 1234567)
"Locale-specific group separators 1,234,567"
user=> (format "decimal %d octal %o hex %x upper-case hex %X" 63 63 63 63)
"decimal 63 octal 77 hex 3f upper-case hex 3F"
user=> (format "%2$d %1$s" "Positional arguments" 23)
"23 Positional arguments"
地味だが、覚えておくと便利な関数だ。
Chinoba
Intelligence as Relationship
Research Platform
founded by
Masao Watanabe
AI Systems Architecture
Decision Trace
Human–AI Coordination
Algorithmic Governance
Related Research
この記事は Chinoba Knowledge Base の一部です。

コメント
[…] DBアクセスのお供format関数 queryの自動生成 […]
[…] 展開することが可能となる。(バッククォートでの展開はLISPでのマクロ展開の適用となる。同様なテンプレート文字列の話はclojureでの”DBアクセスのお供format関数“にも述べている) […]