Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除Oracle中用户名的未命中_Oracle - Fatal编程技术网

删除Oracle中用户名的未命中

删除Oracle中用户名的未命中,oracle,Oracle,我有一个查询,我想从用户名 我尝试了下面的查询 SELECT 0 user_id, '--- Select ---' user_name FROM DUAL UNION SELECT DISTINCT user_id, LTRIM (user_name) user_name FROM xxcus.xxacl_pn_user_det_v ORDER BY user_name 但它仍然不适合我 这是截图 您可以使用以下函数 REPLACE(user_

我有一个查询,我想从
用户名

我尝试了下面的查询

SELECT   0 user_id, '--- Select ---' user_name
FROM DUAL
UNION
            SELECT DISTINCT user_id, LTRIM (user_name) user_name
       FROM xxcus.xxacl_pn_user_det_v
   ORDER BY user_name
但它仍然不适合我

这是截图

您可以使用以下函数

REPLACE(user_name,'MISS','') as user_name
您可以使用如下函数

REPLACE(user_name,'MISS','') as user_name

如果有几个可能要删除的前缀,可以使用
regexp\u replace()

^
将搜索锚定在字符串的开头,
(…|…|…)
表示匹配括号中的任何选项,
\s
是一个空格
\s*
表示零个或多个连续空格。从每个字符串开头删除的所有内容。点
必须用退格转义(否则它代表“任何单个字符”)

如果需要不区分大小写的匹配,如果除了
Miss
之外还可能有
Miss
,请使用
regexp\u replace
的完整语法


编辑:还有一件事。。。从左到右逐个尝试备选方案,并使用第一个匹配项。因此
MS\.
应出现在
MS
之前,否则
MS
(无点)将匹配
MS
中的
MS
,这将在字符串开头留下点和空格。我必须在解决方案中更正此问题。

如果您有几个可能要删除的前缀,可以使用
regexp\u replace()

^
将搜索锚定在字符串的开头,
(…|…|…)
表示匹配括号中的任何选项,
\s
是一个空格
\s*
表示零个或多个连续空格。从每个字符串开头删除的所有内容。点
必须用退格转义(否则它代表“任何单个字符”)

如果需要不区分大小写的匹配,如果除了
Miss
之外还可能有
Miss
,请使用
regexp\u replace
的完整语法


编辑:还有一件事。。。从左到右逐个尝试备选方案,并使用第一个匹配项。因此
MS\.
应出现在
MS
之前,否则
MS
(无点)将匹配
MS
中的
MS
,这将在字符串开头留下点和空格。我必须在解决方案中纠正这一点。

如果您有类似于(mr | mrs | other)/空格的列结构/username,您可以尝试此方法

with users(user_name) as 
              (select 'mr user name1' from dual union all 
               select 'miss username2 ' from dual union all
               select 'other username 3' from dual )

select substr(user_name,instr(user_name,' ')+1) real_username from users
输出

REAL_USERNAME  
----------------
user name1       
username2        
username 3    
substr
来自第一个创建的空格符号

在你的询问中

SELECT   0 user_id, '--- Select ---' user_name
FROM DUAL
UNION
            SELECT DISTINCT user_id, substr(user_name,instr(user_name,' ')+1) user_name
       FROM xxcus.xxacl_pn_user_det_v
   ORDER BY user_name
如果您想要---选择---从顶部开始,您可以:

select user_id, user_name
from (

    SELECT   0 user_id, '--- Select ---' user_name, 1 order_by
FROM DUAL
UNION
            SELECT DISTINCT user_id, substr(user_name,instr(user_name,' ')+1) user_name, 2 order_by
       FROM xxcus.xxacl_pn_user_det_v
) 
   ORDER BY order_by, user_name

如果您有类似于(mr | mrs | other)/space/username的列结构,您可以尝试以下方法

with users(user_name) as 
              (select 'mr user name1' from dual union all 
               select 'miss username2 ' from dual union all
               select 'other username 3' from dual )

select substr(user_name,instr(user_name,' ')+1) real_username from users
输出

REAL_USERNAME  
----------------
user name1       
username2        
username 3    
substr
来自第一个创建的空格符号

在你的询问中

SELECT   0 user_id, '--- Select ---' user_name
FROM DUAL
UNION
            SELECT DISTINCT user_id, substr(user_name,instr(user_name,' ')+1) user_name
       FROM xxcus.xxacl_pn_user_det_v
   ORDER BY user_name
如果您想要---选择---从顶部开始,您可以:

select user_id, user_name
from (

    SELECT   0 user_id, '--- Select ---' user_name, 1 order_by
FROM DUAL
UNION
            SELECT DISTINCT user_id, substr(user_name,instr(user_name,' ')+1) user_name, 2 order_by
       FROM xxcus.xxacl_pn_user_det_v
) 
   ORDER BY order_by, user_name


我有,
miss
mr
mrs
。这里有很多东西。我怎么能使用这些呢?@stack,但你的问题中缺少这些信息。顺便说一句,你仍然可以递归地替换它们。我知道,但我提到了两个miss,yes先生让我知道如何使用它们?@stack,比如
replace(replace(用户名,'miss','','mr','')
这里有一件事,我的
——选择---miss
mr
mrs
。这里有很多东西。我怎么能使用这些呢?@stack,但你的问题中缺少这些信息。顺便说一句,你仍然可以递归地替换它们。我知道,但我提到了两个miss,yes先生让我知道如何使用它们?@stack,比如
replace(replace(用户名,'miss','','mr','')
这里有一件事,我的<代码>---选择---
并没有在我的queryOracle公司拥有的MySQL服务器上占据领先地位,但它与他们的旗舰Oracle数据库完全不同。我已经删除了问号。Oracle公司拥有MySQL服务器,但它与他们的旗舰Oracle数据库完全不同。我已经删除了问号。这里有一件事,我的
---Select---
没有在我的问题的顶部。我不明白。这是什么意思?我的
--选择--
应该在顶部。但是现在它是这样来的,这与从字符串的开头删除MISS有什么关系?这是一个不同的,无关的问题,关于订单管理;如果你对此有疑问,请单独发布。如果你想删除可选的句号,只需将其设置为可选一次:
^(MISS | MS | MRS | MR)\。\s*
。有一件事,我的
---Select---
不会在我的问题上占上风,我不明白。这是什么意思?我的
--选择--
应该在顶部。但是现在它是这样来的,这与从字符串的开头删除MISS有什么关系?这是一个不同的,无关的问题,关于订单管理;如果您对此有疑问,请单独发布。如果您想删除可选的句号,只需将其设置为可选一次:
^(MISS | MS | MRS | MR)\。\s*
。您正在硬编码所有以
us
开头的名称?这与OP的示例数据不匹配。lol那么您应该知道为什么这个解决方案不起作用。“other username 3”不是以MISS或MR等开头的-您只是删除了“other”,它可能是名称的一部分,而不是前缀。在OP示例中,所有行都从real_username之前的某个单词开始。回答有关顺序的无关问题。。。您不需要在
order by
中添加列,只需在
order by
子句本身中有一个
大小写
表达式即可。不过,我会等OP单独问这个问题,因为它与原始问题完全无关。@mathguy,很多答案可能是,我想是这样,但你在想另一个问题。我很高兴你有