如何在 Oracle Query 中执行此操作?这就是说我们想要在该列中最左侧位置为“1”的记录。
AND substring(convert(varchar,TR.MENU_ID_VALUE), 1, 1) = '1'
如何在 Oracle Query 中执行此操作?这就是说我们想要在该列中最左侧位置为“1”的记录。
AND substring(convert(varchar,TR.MENU_ID_VALUE), 1, 1) = '1'
convert
function函数将字符串从一个字符集转换为另一个字符集。语法是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
利用SUBSTR
AND substr(tr.menu_id_value,1,1) = '1'