我有一个存储在文本字段(字符串)中的邮政编码,并且只想在我的select语句中选择值的最后3位数字。这可能吗?是否有一种标准的方法可以使SQL在数据库中互换?我将在Oracle上使用它,但是我在Interbase上进行测试(是的,是的,我知道,两个完全不同的数据库,但这就是我正在做的事情)
感谢您提供的任何帮助
答案 0 :(得分:4)
假设所有邮政编码长度相同,您可以使用substr
如果它们的长度不同,则必须使用strlen
函数执行类似操作。
Interbase没有内置子字符串函数,但它在UDF
中有一个名为SUBSTR
的{{1}}(用户定义函数),其工作方式如下:
lib_udf.dll
您可以像这样声明UDF:
select substr(clients.lastname, 1, 10)
from clients
Oracle确实有一个你使用的内置substr函数:
DECLARE EXTERNAL FUNCTION SUBSTR
CSTRING(80),
SMALLINT,
SMALLINT
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';
- 的Jeroen
答案 1 :(得分:2)
这取决于您存储邮政编码的方式。如果您只使用5位数 那么这应该适用于Oracle,可能适用于Interbase。
select * from table where substr(zip,3,3) = '014'
如果您存储Zip + 4并且您想要最后3位数,有些是5位数而有些是9位数,则必须执行以下操作。
select * from table where substr(zip,length(zip) -2,3) = '014'
并且可以在两个数据库中更好地工作的一个选项是
select * from table where zip like '%014'