Database Oracle表中列中的字符串操作
我的一个表格列包含名称,例如Database Oracle表中列中的字符串操作,database,string,oracle,Database,String,Oracle,我的一个表格列包含名称,例如“Obama,Barack”(带双引号)。我想知道我们是否可以做点什么,让它在表格中显示为巴拉克·奥巴马。我认为我们可以通过声明一个变量来实现,但就是找不到解决方案 是的,因为这个表包含同一个人的多个事务,我们也会得到多行的“Obama,Barack”。。。数据仓库概念(事实表)。本所说的是正确的。有两列,一列是名字,一列是姓氏是正确的 但是,如果您希望更新整个数据库,您可以这样做 /*This will swap the order round*/ UPDA
“Obama,Barack”
(带双引号)。我想知道我们是否可以做点什么,让它在表格中显示为巴拉克·奥巴马。我认为我们可以通过声明一个变量来实现,但就是找不到解决方案
是的,因为这个表包含同一个人的多个事务,我们也会得到多行的
“Obama,Barack”
。。。数据仓库概念(事实表)。本所说的是正确的。有两列,一列是名字,一列是姓氏是正确的
但是,如果您希望更新整个数据库,您可以这样做
/*This will swap the order round*/
UPDATE TableName SET NameColumn = SUBSTRING(NameColumn, 1, CHARINDEX(',',NameColumn))+SUBSTRING(NameColumn, CHARINDEX(',', NameColumn),LEN(NameColumn)-CHARINDEX('"', NameColumn,2))
/*This will remove the quotes*/
UPDATE TableName SET NameColumn = REPLACE(NameColumn, '"', '')
编辑:-但由于我看不到您的数据,您可能需要稍微编辑一下。但这一理论是正确的。请看这里的问题,我想你想:
- 删除引号
- 删除逗号
- 交换名字
UPDATE tablename
SET column_name = REGEXP_REPLACE( column_name, '^"(\w+), (\w+)"$', '\2 \1' )
因此,regexp\u replace
正在更改列值,只要它与模式完全匹配。表达式的各个部分是什么
表示必须以双引号开头^“
表示后面紧跟着一个由1个或多个字母数字字符组成的字符串。该字符串随后保存为变量(\w+)
,因为它是第一组\1
()
表示紧接着一个逗号和一个空格,
表示紧接着一个由1个或多个字母数字字符组成的字符串。该字符串随后被保存为变量(\w+)
,因为它是第二组\2
()
表示紧跟在字符串末尾的双引号后面“$
是替换字符串,第二个保存的字符串后跟一个空格,后跟第一个保存的字符串\2\1
UPDATE tablename
SET column_name = REGEXP_REPLACE( column_name, '^\W*(\w+)\W+(\w+)\W*$', '\2 \1' )
这是类似的,但实际上使引号和逗号成为可选的,并处理任何其他前导或尾随的发布或空白
表示必须以零开始^\W*
表示由一个或多个非字母数字分隔的两个字母数字字符串。这两个字符串如上所述保存(\w+)\w+(\w+)
表示必须以零或更多非字母数字结尾\W*$
instr
应该会有帮助。请不要这样。有两列,firstname
和lastname
,然后你可以任意组合它们。哦,是的,还要注意小女士。三号博士,Esq等等。不要忘记中间名。@John,谢谢,我尽量不让人厌烦还有更多的内容。根据你住的地方,坚持自称为博士的奇怪的人,例如约翰·H·帕特里克·史密斯博士。因此,您需要标题前
和标题后
以及中间名。您好,如Ben所述,将其更改为两列是设计阶段的一部分,而我肯定不是设计阶段的一部分。所以我只能靠自己来解决这个问题(OP使用了“oracle”标签,所以我不确定关于SQL Server的答案有多重要。嗨,Eddie。谢谢你的回复。这只是关于oracle的。我尝试使用lil oracle更新作为substr、instr和length启动上述查询。但它仍然抛出了我“ORA-00907:缺少右括号”…查询对我来说很好,但仍然找不到解决方案。此外,Ben提到的更改为两列是设计阶段的一部分,我肯定不是设计阶段的一部分。:(问候!嗨,谢谢回复。.是的,我想做的所有三件事。:)我对regex exp不是很熟悉。你想启动上面的吗?正如我所做的一样,查询成功启动了,但名称仍然没有改变。是的,上面的操作应该有效。我会在回答中解释,然后添加一个更灵活的版本