ServiceNowの演算子について

Koki
Tera Contributor

ServiceNowのREST APIのsysparm_queryで、以下のようなSQLの条件句を表現したいです。

 

次のようなSQLの条件句があります。
SUBSTR(SYSTEM_ID,6) <> '00'
SYSTEM_ID IS NOT NULL


どのように記述することができますか?

1 件の受理された解決策

SUBSTR にかぎらず SQLで当然できることが ServiceNowの Queryではできない事があります。似ているけれどSQLとは違うものと考えたほうが良いです。

SUBSTR については、ServiceNowのテーブルにColumnを追加してSUBSTRした結果を格納するか関数フィールドを使う必要があるのではないかと考えています。

関数フィールド (servicenow.com)

元の投稿で解決策を見る

4件の返信4

iwai
Giga Sage

SUBSTR に該当する演算子は無いです。今回のようにsys_id を 判定するのであれば、SUBSTR は 不要かと思います。sys_idが0で初期化されていることはないです。存在するレコードのsys_idがNULLであることもありませんが、Release 項目ならNULLはあります。その場合は "IS NOT NULL"は"ISNOTEMPTY"になります。opened_byの項目を例とすると"sysparm_query=opened_byISNOTEMPTY"になります。

以下のページが参考になると思います。

エンコードされたクエリ文字列 (servicenow.com)

フィルターとクエリに使用できる演算子 (servicenow.com)

Koki
Tera Contributor

SQLに含まれている「SYSTEM_ID」はServiceNowのsys_idとは別のフィールドとなります。

MBD320B、DKIFM00、KBSRN00などの文字列が入ることを想定しています。

ややこしい書き方をして申し訳ございません。

 

とあるJavaシステムとOracleのDBを用いた連携システムが現在稼働しているのですが、そのOracleをServiceNowに置き換えることを検討中です。

現在SQLで行っていることを、ServiceNowのTable APIを用いて行う必要があり、

外部からServiceNowレコードのGET時に以下のような条件が必要となるのですが、方法がわからず質問させていただきました。

 

SUBSTR(SYSTEM_ID,6) <> '00'
SYSTEM_ID IS NOT NULL

SUBSTR にかぎらず SQLで当然できることが ServiceNowの Queryではできない事があります。似ているけれどSQLとは違うものと考えたほうが良いです。

SUBSTR については、ServiceNowのテーブルにColumnを追加してSUBSTRした結果を格納するか関数フィールドを使う必要があるのではないかと考えています。

関数フィールド (servicenow.com)

Koki
Tera Contributor

ありがとうございます。

まずは教えていただいた関数フィールドについて、調べてみたいと思います。