如何在 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'
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
利用SUBSTR
AND substr(tr.menu_id_value,1,1) = '1'