SQL Between子句与字符串列

Che*_*uis 18 sql database postgresql search

我想在字符串列上使用"between"子句进行搜索.做一些测试我得到了这个:

假设有一个国家表格,其中包含varchar类型的"名称"列.如果我执行此查询:

Select * from country where name between 'a' and 'b'
Run Code Online (Sandbox Code Playgroud)

我得到了这个结果:

Argentina
.
.
.
Argelia.
Run Code Online (Sandbox Code Playgroud)

它排除那些以B开头的国家,我发现它有点奇怪.

有没有办法以更准确的方式进行搜索?进行此搜索的其他任何想法?

提前致谢

Jay*_*Jay 37

表达方式

name between 'A' and 'B'
Run Code Online (Sandbox Code Playgroud)

相当于

name>='A' and name<='B'
Run Code Online (Sandbox Code Playgroud)

所以'阿根廷'是> ='A'和<='B',它满足条件.但'玻利维亚'不是<='B'.'玻利维亚'> 'B'.它不只是看第一个字母:它查看整个字符串.这肯定是应该的方式:如果它不这样做,就没有办法说你想要一个包括'史密斯'而不是'史密瑟斯'的范围.

为了实现你想要的,你可以说:

substr(name,1,1) between 'A' and 'B'
Run Code Online (Sandbox Code Playgroud)

要么:

name like 'A%' or name like 'B%'
Run Code Online (Sandbox Code Playgroud)

要么:

name>='A' and name<'C'
Run Code Online (Sandbox Code Playgroud)