选择子字符串的位置

Ale*_*ont 0 sql oracle

SQL新手在这里,但我找不到容易看到的解决方案:

以下查询似乎没有有效的语法(ORA-00904:无效的标识符),但其逻辑应该是明确的.如何在需要快速的查询中实现此目的?

SELECT * FROM table WHERE LEFT(column,4)="abcd"
Run Code Online (Sandbox Code Playgroud)

jar*_*rlh 6

Oracle和其他一些产品都有substr.

SELECT * FROM tablename WHERE substr(columnname, 1, 4) = 'abcd'
Run Code Online (Sandbox Code Playgroud)

即字符串文字的单引号!

ANSI SQL具有substring:

SELECT * FROM tablename WHERE substring(columnname from 1 for 4) = 'abcd'
Run Code Online (Sandbox Code Playgroud)

其他人有left:

SELECT * FROM tablename WHERE LEFT(columnname,4) = 'abcd'
Run Code Online (Sandbox Code Playgroud)


Gor*_*off 5

为此,你应该使用like而不是left().首先,Oracle不支持left()(您需要substr()).其次,like可以使用索引,因为通配符不在字符串的开头:

SELECT *
FROM table
WHERE column like 'abcd%';
Run Code Online (Sandbox Code Playgroud)