PostgreSQL组合复杂查询字符串

PostgreSQL组合复杂查询字符串,postgresql,Postgresql,我将PostgreSql与VB.NET/ODBC一起使用,必须构造一个有点复杂的查询字符串。 这是简化版: 从mytable中选择dtbl_id、idx、名称、MEA、代码、年份 如果名称像“尼莫%”请尝试: 细节 错误-或优先级较低。因此,您的第一个WHERE子句如下所示: WHERE (name ILIKE '%nemo' AND dtbl_id BETWEEN 1 AND 9999) OR (dtbl_id BETWEEN 15000 AND 19999) Edmund指出的另一

我将PostgreSql与VB.NET/ODBC一起使用,必须构造一个有点复杂的查询字符串。 这是简化版:

从mytable中选择dtbl_id、idx、名称、MEA、代码、年份 如果名称像“尼莫%”请尝试:

细节

错误-或优先级较低。因此,您的第一个WHERE子句如下所示:

WHERE (name ILIKE '%nemo'  AND dtbl_id BETWEEN 1 AND 9999)
   OR (dtbl_id BETWEEN 15000 AND 19999)

Edmund指出的另一个错误是,要获得以nemo开头的名称,您需要使用类似“nemo%”的条件。

主要问题是,最好使用类似“nemo%”的条件名称来获得以nemo开头的名称。请注意,%通配符位于末尾。把它放在开头搜索以尼莫结尾的名字


第二个问题是OR运算符的优先级,正如Igor所指出的那样。如他所示,在后两个子句的周围放上括号。

对不起,这在简化示例的过程中会变成。好的,我有一个可行的程序,可以选择“从开始”或“内部”,所以这更多的是打字错误,而不是真正的问题。
WHERE (name ILIKE '%nemo'  AND dtbl_id BETWEEN 1 AND 9999)
   OR (dtbl_id BETWEEN 15000 AND 19999)