我的数据库(Oracle 11g)中有一个大表,我想更新表中的列,其中包含特定的数字.我想通过设置prefix此列的每个值的前面来更新它.
示例(SpecificNumber是int和PK,Value1是Varchar2,因此是最后一列):
实际数据:
[SpecificNumber] [Value1] [column2gettingupdated]
[1] 123456789 Test text
[2] 123456789102 sth text2
[3] 12233 text test3
Run Code Online (Sandbox Code Playgroud)
未来数据(在我的sql之后):
[SpecificNumber] [Value1] [column2gettingupdated]
[1] 123456789 Test PREFIX-text
[2] 123456789102 sth PREFIX-text2
[3] 12233 text PREFIX-test3
Run Code Online (Sandbox Code Playgroud)
所以我想的是:
Update table
set column2gettingupdated=("prefix"+
(select column2gettingupdated from table where SpecificNumber = '12233')
)
where SpecificNumber = '12233';
Run Code Online (Sandbox Code Playgroud)
但这给了我一个ORA-00904: "p": invalid identifier错误.
如果我试试这个:
Update table
set column2gettingupdated=("prefix"+
(select column2gettingupdated from table where SpecificNumber = '12233')
) …Run Code Online (Sandbox Code Playgroud) 我们在 db 中已经有这个表 ( IPConfig)。(SQL Server 2k8)
IP | Member
-----------------------
10.1.2.100 | Joe
10.2.2.200 | Maley
Run Code Online (Sandbox Code Playgroud)
现在,我应该有一个查询应该执行以下操作:
我从这个开始但无法继续。
IF (NOT EXISTS (SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'IPConfig'))
BEGIN
CREATE TABLE dbo.IPConfig (
IP CHAR(10) PRIMARY KEY NOT NULL,
Member VARCHAR(32) NOT NULL)
END
DECLARE @TempTable Table( -- Create a temp table.
IP CHAR(10) PRIMARY KEY NOT NULL,
Member VARCHAR(32) NOT NULL)
INSERT INTO @TempTable(
IP,
Member)
SELECT
'10.1.2.100', --Already existing …Run Code Online (Sandbox Code Playgroud)