小编nic*_*App的帖子

根据条件使用另一个表的列更新列值

我有两张桌子......

table1(id,item,price)值:

id | item | price
-------------
10 | book | 20  
20 | copy | 30   
30 | pen  | 10
Run Code Online (Sandbox Code Playgroud)

.... table2(id,item,price)值:

id | item | price
-------------
10 | book | 20
20 | book | 30
Run Code Online (Sandbox Code Playgroud)

现在我想:

update table1 
   set table1.Price = table2.price 
 where table1.id = table2.id
   and table1.item = table2.item.
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

mysql sql sql-server oracle

102
推荐指数
2
解决办法
36万
查看次数

如何使用SQL Server将空白空间转换为空值?

我有一个表,此表上的列包含一些记录的空格.现在我需要将数据移动到另一个表并用NULL值替换空格.

我试着用:

REPLACE(ltrim(rtrim(col1)),' ',NULL)
Run Code Online (Sandbox Code Playgroud)

但它不起作用.它会将所有值转换col1NULL.我只想将那些具有空格的值转换为NULL.

sql-server null is-empty

43
推荐指数
6
解决办法
15万
查看次数

SQL Server将字符串列的值连接为5个字符长

场景:

我有一个table1(col1 char(5)); table1中的值可以是'001'或'01'或'1'.

需求:

无论col1中的值是什么,我都需要在5个字符串长度中将其与前导"0"连接,使其为5个字符长.

我申请的技术:

select right(('00000' + col1),5) from table1; 
Run Code Online (Sandbox Code Playgroud)

我没有看到任何理由,为什么它不起作用?但事实并非如此.任何人都可以帮助我,我怎样才能达到预期的效果?

sql database sql-server

6
推荐指数
1
解决办法
3809
查看次数

数据驱动的业务规则.

我正在使用SQL SERVER 2005.

我有一张桌子

table1(ID,col1,col2,col3,col4);
Run Code Online (Sandbox Code Playgroud)

现在我的业务逻辑如下:

If col1 >= 126 and col2 > 1 then col3 = 0
if col1 >=126 and col2 < 1 then col3 = col1+col4
Run Code Online (Sandbox Code Playgroud)

现在我要做的是将所有这些规则存储在数据库中并使其成为数据驱动的.这样做的原因是为最终用户提供更大的灵活性.如果明天业务规则发生变化,最终用户可以灵活地通过GUI进行更改.例如.如果明天企业想要将比较值从126改为200,他们应该能够通过界面改变它.我尽可能尝试提供灵活性,如更改列的能力,就像业务应该能够更改规则所以而不是col1他们可以将新规则更改为col2.如果可能的话,他们也可以更改操作符而不是> =他们可以将其更改为<=.

我想更改它更多的数据驱动,所以当值是表中的更改时,我们不需要更改代码.

有可能在数据库中做这件事吗?有人可以建议支持此业务规则的数据模型是数据驱动的吗?

database-design sql-server-2005 business-rules

5
推荐指数
1
解决办法
2895
查看次数

使用FOR UPDATE语句

我正在使用PL/SQL(Oracle 11g)来更新EMPLOYEES表薪水列.

我使用了两个单独的脚本来做同样的事情,即更新员工的工资.

一个脚本使用FOR UPDATE OF语句,而另一个脚本不使用它.在这两种情况下,我发现oracle持有行级锁,直到我们执行ROLLBACKCOMMIT命令.

然后两个脚本之间有什么区别?

哪一个更好用?

这是我正在谈论的两个脚本:

-- Script 1: Uses FOR UPDATE OF

declare
cursor cur_emp
is
select employee_id,department_id from employees where department_id = 90 for update of salary;
begin
  for rec in cur_emp
  loop
    update Employees
    set salary = salary*10
    where current of cur_emp;
   end loop;
end;


--Script 2: Does the same thing like script 1 but FOR UPDATE OF is not used here

declare
cursor cur_emp
is …
Run Code Online (Sandbox Code Playgroud)

oracle plsql

5
推荐指数
1
解决办法
1万
查看次数

一次将一条记录插入表中的多个表

我有一个MAIN_TABLE平.我需要将此表中的记录插入多个表格.

例如.

MAIN_TABLE
col1, col2, col3, col4, col5

PARENT1_TABLE
PT1_ID(PK), col1,col2

PARENT2_TABLE
PT2_ID(PK), col3,col4

PARENT2_CHILD_TABLE
P2C_ID(PK), PT2_ID(FK), col5, col6
Run Code Online (Sandbox Code Playgroud)

等等.

目标是,我必须将记录从平面MAIN_TABLE移动到上面定义的关系结构.

任何帮助将受到高度赞赏?

谢谢

mysql sql sql-server oracle

3
推荐指数
1
解决办法
903
查看次数

将xml架构转换为关系模型

你们知道吗,我们如何将XML Schema转换为关系模型?涉及的步骤是什么?更确切地说,我们如何才能通过仅查看XML Schema来确定表名,列名和这些表上的关系,就像在关系模型上一样?

如果您有任何教程链接,示例请与我分享.我非常感谢你对此的帮助.

谢谢

database-design datamodel relational-database

2
推荐指数
1
解决办法
1万
查看次数

仅删除顶行.SQL Server

如何仅删除SQL Server中表的顶行?

我做了:

set rowcount 1;
delete * from table;
set rowcount 0;
Run Code Online (Sandbox Code Playgroud)

但我不确定它是否是一个很好的方法.

有没有更好的方法来实现这一目标?

sql sql-server

2
推荐指数
1
解决办法
5164
查看次数

使用SQL SERVER构建业务规则引擎

我需要构建业务规则引擎.我使用的是SQL SERVER 2005.业务规则非常庞大,就像2000页长.

例如.

If col1 = 'xyz' then populate col2 otherwise not.
if col3 = 'abc' and col4 = 'def' then col5 = 'ghy'
Run Code Online (Sandbox Code Playgroud)

等等

所以,我认为我们不能只在程序中的if else条件下编写所有这些规则.所以,我可以创建一个决策表,并将该表上的所有条件作为记录.但我不知道该怎么做.

任何人都有任何想法,怎么做?

谢谢

sql-server rdbms rule-engine business-rules system-design

1
推荐指数
1
解决办法
1561
查看次数

Oracle包创建错误

我创建了一个包和一个包体,如下所示:

Create or replace Package pkg_1
as
procedure main(param1 varchar2, param2 varchar2, param3 int);
procedure one(param1 varchar2, param2 varchar2);
procedure two(param1 varchar2, param2 varchar2);
end pkg_1;
/

create or replace package body pkg_1
as
procedure main (param1 varchar2, param2 varchar2, param3 int)
is
v_sql_script varchar2(1000);
begin
case param3
when 1 then
v_sql_script := 'begin exec pkg_1.one(:param1,:param2); end;';
execute immediate v_sql_script using param1, param2;
end case;
end;
Run Code Online (Sandbox Code Playgroud)

现在,当我使用以下语句执行包过程时:

exec pkg_1.main('p1','p2',1);

I got the following error:

ORA-06550: line 1, column 12:
PLS-00103: …
Run Code Online (Sandbox Code Playgroud)

oracle oracle10g oracle11g

1
推荐指数
1
解决办法
158
查看次数

Oracle Date列清理

我有一个table1(DueDate varchar2(20)).它有数千个不同格式的日期数据和一些不良数据,如字符.

例如.

YYYYMMDD,
MM/DD/YYYY,
MM-DD-YYYY,
M/D/YYYY,
'ABCD'
YYYYMMD,
YYYYMDD,
Run Code Online (Sandbox Code Playgroud)

现在我必须得到逾期一周的日期.我怎么做?

谢谢您的帮助.

oracle

1
推荐指数
1
解决办法
795
查看次数

ORACLE:我们可以在存储过程中创建全局临时表或任何表吗?

下面是我写的存储过程:

create or replace procedure test005
as
begin

CREATE GLOBAL TEMPORARY TABLE TEMP_TRAN 
( 
COL1 NUMBER(9), 
COL2 VARCHAR2(30), 
COL3 DATE 
) ON COMMIT PRESERVE ROWS 

/
INSERT INTO TEMP_TRAN VALUES(1,'D',sysdate); 

INSERT INTO TEMP_TRAN VALUES(2,'I',sysdate); 

INSERT INTO TEMP_TRAN VALUES(3,'s',sysdate); 

COMMIT;
end;
Run Code Online (Sandbox Code Playgroud)

当我执行它时,我收到一条错误消息,提到:

create or replace procedure test005
as
begin

CREATE GLOBAL TEMPORARY TABLE TEMP_TRAN 
( 
COL1 NUMBER(9), 
COL2 VARCHAR2(30), 
COL3 DATE 
) ON COMMIT PRESERVE ROWS 

/
INSERT INTO TEMP_TRAN VALUES(1,'D',sysdate); 

INSERT INTO TEMP_TRAN VALUES(2,'I',sysdate); 

INSERT INTO TEMP_TRAN VALUES(3,'s',sysdate); 

COMMIT;
end; …
Run Code Online (Sandbox Code Playgroud)

oracle toad plsql ora-00955

0
推荐指数
1
解决办法
2万
查看次数