1

如何在 Oracle Query 中执行此操作?这就是说我们想要在该列中最左侧位置为“1”的记录。


AND substring(convert(varchar,TR.MENU_ID_VALUE), 1, 1) = '1'
4

2 回答 2

4

convertfunction函数将字符串从一个字符集转换为另一个字符集。语法是convert(<string>, <to character set>, <from character set>)

另外,substring不是 Oracle 函数,它是substr.

如果您不需要转换字符串,那么and substr(tr.menu_id_value,1,1)将为您提供最左边的字符。

如果您确实想转换字符集,那么文档中提供了完整列表,或者您可以查询v$nls_valid_values。例如,如果您要从 WE8MSWIN1252 (Windows 代码页 1252)转换为 AL32UTF8 (UTF-8),那么您的条件将变为:

and substr(convert(tr.menu_id_value,'AL32UTF8','WE8MSWIN1252'),1,1) = '1'

根据您的评论,我猜这convert()是在数据类型之间转换的 SQL-Server 函数。在这种情况下,Oracle 等价物将是to_char. 尽管 Oracle 会隐式地进行转换,但最好还是显式使用to_char和转换;给你:

and substr(to_char(tr.menu_id_value),1,1) = '1'

顺便说一句,确切的Oracle 等效项是cast(). 严格来说,to_char()如果你想使用格式模型,应该使用它,因此在假设长度小于或等于 10substr(cast tr.menu_id_value as varchar2(10)),1,1)之后也会给你你想要的东西。tr.menu_id_value

于 2012-05-23T18:50:32.510 回答
1

利用SUBSTR

AND substr(tr.menu_id_value,1,1) = '1'
于 2012-05-23T18:51:08.373 回答