我在文本字段(字符串)中存储了一个邮政编码,并且只想在select语句中选择该值的最后3位。这个是可能的吗?有没有这样做的标准方法,这样SQL就可以跨数据库互换了?我将在Oracle上的生产环境中使用它,但我在Interbase上进行了测试(是的,是的,我知道,两个完全不同的数据库,但这就是我要做的)
感谢您能提供的任何帮助
发布于 2011-02-18 04:53:11
假设邮政编码都具有相同的长度,您可以使用substr。
如果它们不具有相同的长度,则必须使用strlen函数执行类似的操作。
Interbase没有内置子字符串函数,但它在lib_udf.dll中有一个名为SUBSTR的UDF (用户定义函数),其工作方式如下:
select substr(clients.lastname, 1, 10)
from clients您可以这样声明UDF:
DECLARE EXTERNAL FUNCTION SUBSTR
CSTRING(80),
SMALLINT,
SMALLINT
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';Oracle有一个内置的substr函数,您可以像这样使用它:
select substr(clients.lastname, 1, 10)
from clients--jeroen
发布于 2011-02-18 03:35:49
这取决于您存储邮政编码的方式。如果您只使用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'https://stackoverflow.com/questions/5033616
复制相似问题