Memos About Salesforce

Salesforceにハマってたこと!

SOQL アンダースコアエスケープ Apex 開発コンソール \\_ あるいは\_どちら?効かない?

f:id:jude2016:20210408172717p:plain
引用符で囲まれた文字列のエスケープシーケンス

こんにちは、管理人の@Salesforce.Zです。

SalesforceのクエリSOQLの条件に特殊文字で検索・問合せしたい場合、どうするかその方法を共有する

読んだら得ること

★ SOQLでのアンダースコアエスケープ\_ OR \\_効く方法

目次

特殊文字アンダースコア アンダーバーのエスケープ方法

正式ドキュメントによって、円マック¥を特殊文字前につけて、SOQLクエリの条件文にしたら、検索できる

しかし、開発コンソールで検証時に動作しなかった。

それで、検証結果をもって、効く方法を共有する

アンダースコア・アンダーバーをエスケープ方法1「¥_」

この方法は、APIを使う場合に動作する(例:テラス会社のDataSpiderでのクエリ

アンダースコア・アンダーバーをエスケープ方法1「¥¥_」

この方法は、Apexのコードでは、動作する(例:匿名ウィンドウ、Apexクラス

f:id:jude2016:20210408174049p:plain
実行例

f:id:jude2016:20210408174122p:plain
実行結果(動作するパターンと動作しないパターン)
ご覧のように、同じ、APEXでも

1.直接検索:動作します デバッグを確認した結果が動作したのがFROMのオブジェクトの項目を直接 LIKE分をつけたクエリは動作した

2.間接検索:動作しない権限セットに対して検索する場合、条件に親のプロファイル名でアンダーバーを検索したいなら、動作しない

※ただし直接検索でも開発コンソールのクエリエディターは動作しない

リファレンス

引用符で囲まれた文字列のエスケープシーケンス

Use LIKE in SOQL when used in Apex to escape special characters