需要在IBM i SQL上添加LIKE子句

需要在IBM i SQL上添加LIKE子句,sql,ibm-midrange,db2-400,Sql,Ibm Midrange,Db2 400,我对这些条件有一个看法。我想在第三行添加另一种类型 我还想要那些用like作为“FR”的行,有没有办法在like子句下有这样一个组 ASTDTA.ICPRTMIA.IARCC9='ACS' AND ASTDTA.OEINDLID.IDCOM#='001' AND ASTDTA.OEINDLID.IDPRT# LIKE 'ACS%' AND ASTDTA.ADRESSAD.ADSFX# = SUBSTR(ASTDTA.OEINDL

我对这些条件有一个看法。我想在第三行添加另一种类型 我还想要那些用like作为“FR”的行,有没有办法在like子句下有这样一个组

ASTDTA.ICPRTMIA.IARCC9='ACS' AND        
ASTDTA.OEINDLID.IDCOM#='001' AND        
ASTDTA.OEINDLID.IDPRT# LIKE 'ACS%' AND  
ASTDTA.ADRESSAD.ADSFX# =                
SUBSTR(ASTDTA.OEINDLID.IDGRC#,9,3       
使用或条件:

ASTDTA.ICPRTMIA.IARCC9='ACS' AND        
ASTDTA.OEINDLID.IDCOM#='001' AND        
(ASTDTA.OEINDLID.IDPRT# LIKE 'ACS%' OR ASTDTA.OEINDLID.IDPRT# LIKE 'FR%') AND  
ASTDTA.ADRESSAD.ADSFX# =                
SUBSTR(ASTDTA.OEINDLID.IDGRC#,9,3       
使用或条件:

ASTDTA.ICPRTMIA.IARCC9='ACS' AND        
ASTDTA.OEINDLID.IDCOM#='001' AND        
(ASTDTA.OEINDLID.IDPRT# LIKE 'ACS%' OR ASTDTA.OEINDLID.IDPRT# LIKE 'FR%') AND  
ASTDTA.ADRESSAD.ADSFX# =                
SUBSTR(ASTDTA.OEINDLID.IDGRC#,9,3       

如果你只有一小部分的模式,那么使用JamesA的答案。但是如果您发现您有一堆,那么将您的模式放在一个表中,或者一个临时表中,或者可能只是一个带有values语句的公共表表达式。让我们称之为规则。现在你可以加入它,说

ASTDTA.OEINLID.IDPRT# LIKE RULES.PATTERN

如果你只有一小部分的模式,那么使用JamesA的答案。但是如果您发现您有一堆,那么将您的模式放在一个表中,或者一个临时表中,或者可能只是一个带有values语句的公共表表达式。让我们称之为规则。现在你可以加入它,说

ASTDTA.OEINLID.IDPRT# LIKE RULES.PATTERN

但是请确保Rules.Pattern是VARCHAR,或者您的规则必须在右侧填充%符号。@jmarkmurphy:只有在从变量构造类似条件时才真正需要这样的填充。对于文字常量,这不是问题。我从来没有深入探究过为什么它会有不同。因为答案是说使用一列作为模式,而不是文字。。。无论如何,对于固定长度的字符变量或列来说,这会有所不同,因为字段末尾的空格成为like模式的一部分。因此,如果varchar(5)列和char(5)列都包含“ABC%”,那么varchar列的相似模式将是
'ABC%”
,而char列的相似模式将是
'ABC%”
看到区别了吗?只有varchar模式将匹配'ABCDE'。char模式将只匹配以'ABC'开头且尾随空白的字符串!但是请确保Rules.Pattern是VARCHAR,或者您的规则必须在右侧填充%符号。@jmarkmurphy:只有在从变量构造类似条件时才真正需要这样的填充。对于文字常量,这不是问题。我从来没有深入探究过为什么它会有不同。因为答案是说使用一列作为模式,而不是文字。。。无论如何,对于固定长度的字符变量或列来说,这会有所不同,因为字段末尾的空格成为like模式的一部分。因此,如果varchar(5)列和char(5)列都包含“ABC%”,那么varchar列的相似模式将是
'ABC%”
,而char列的相似模式将是
'ABC%”
看到区别了吗?只有varchar模式将匹配'ABCDE'。char模式将只匹配以'ABC'开头且尾随空白的字符串!