質問

私はテキストフィールドに保存されているZipCode(文字列)を持ち、My Selectステートメントの値の最後の3桁のみを選択します。これは可能ですか?SQLが交換可能なAccrossデータベースになるように、これを行う標準的な方法はありますか?私はOracleでの生産でそれを使用しますが、InterBaseでテストします(はい、はい、私は知っています、私は2つの完全なdiff dbsを知っていますが、それは私がしていること)

あなたが提供できるすべての助けを得てくれてありがとう

役に立ちましたか?

解決

Assuming the zipcodes all have the same length, you can use substr.
If they don't have the same length, you have to do similar things with the strlen function.

Interbase does not have a built-in substring function, but it does have a UDF (user defined function) called SUBSTR in lib_udf.dll that works like this:

select substr(clients.lastname, 1, 10)
from clients

You declare the UDF like this:

DECLARE EXTERNAL FUNCTION SUBSTR
    CSTRING(80),
    SMALLINT,
    SMALLINT
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';

Oracle does have a built-in substr function that you use like this:

select substr(clients.lastname, 1, 10)
from clients

--jeroen

他のヒント

This depends on how your storing the zip code. If you are using 5 digits only then this should work for Oracle and may work for Interbase.

select * from table where substr(zip,3,3) = '014'

IF you store Zip + 4 and you want the last 3 digits and some are 5 digits and some are 9 digits you would have to do the following.

select * from table where substr(zip,length(zip) -2,3) = '014'

and one option that may work better in both databases is

select * from table where zip like '%014'
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top