請教各位大大:
Table中有一欄位記錄的是產品規格,內容為2.5*20*50,如何產生出計算欄位,其結果為2500,又如何產生出判斷欄位(值大於1000,則show“大“;小於1000,show“小“)
如果只是為了顯示, 不要在SQL語法上處理, 不如放到程式端做一個函數, 字串解析+型態轉型
www.adempiere.org
http://www.adempiere.com/index.php/Taiwan
Oracle Database PL/SQL/Adempiere ERP 技術轉移顧問
歡迎使用 Oracle Database
可支持你任何企業需求
Skype::Adempiere/Compiere
你需要一流資料庫需要一流顧問
來成就你一流職場競爭力
CREATE FUNCTION StrCal (str VARCHAR2)
RETURN VARCHAR2
AS
dyn_stmt VARCHAR2(200);
n1 NUMBER;
b1 BOOLEAN;
BEGIN
dyn_stmt := 'SELECT '|| str || ' FROM DUAL';
EXECUTE IMMEDIATE dyn_stmt INTO n1;
IF n1 > 1000 THEN
RETURN '大';
ELSE
RETURN '小';
END IF;
END;
CREATE TABLE T_1(F_1 VARCHAR2(40));
INSERT INTO T_1(F_1)VALUES('2.5*20*50');
SELECT * FROM T_1;
SELECT F_1, StrCal(F_1) FROM T_1;
::
答案是 :: 2.5*20*50 大
www.adempiere.org
http://www.adempiere.com/index.php/Taiwan
Oracle Database PL/SQL/Adempiere ERP 技術轉移顧問
歡迎使用 Oracle Database
可支持你任何企業需求
Skype::Adempiere/Compiere
你需要一流資料庫
更需要一流顧問
來成就你一流職場競爭力
哇, 第一次看到用 SELECT FROM DUAL 來算算數(學藝不精,慚愧慚愧)
今天真是又學到一招
賺到了 ^_^
欄位打長寬高 是一個好主意 比打 總體積 總面積 好多了
你的好主意
需要好技術來支持
請支持一流資料庫 oralce/postgresql :: anti-MS MSSQLServer
請支持一流開發平台 java/android :: anti-MS .dotNet
SQL中含有商業邏輯會增加系統耦合度, 不利於長期系統維護.
系統最好不要拿來企業用, 就不會有商業邏輯!!!
系統輸入畫面 本來就是 消耗品 給規格 驗收 要修改再發包!!
系統查詢畫面 本來就是 消耗品 給規格 驗收 要修改再發包!!
系統查詢報表 本來就是 消耗品 給規格 驗收 要修改再發包!!
一個查詢畫面才 1000元 + 10元 * 欄位數 =
一個輸入畫面才 1000元 + 10元 * 欄位數 =
一個查詢報表才 1000元 + 10元 * 欄位數 =
訂好介面 不被軟體開發商綁架 !!!
長期系統維護 !!! ??? 規格清楚 AnyWhere AnyTime 簡單維護!!!
簡直是顛覆新奇的答覆::
問你溺水要如何救
一堆人回答不准下水就不會溺水
.....
http://functionx.com/sqlserver/sql/case.htm
用Case When就可以了
如果你的表名为tb_student,需要查询的字段是professiona,语法如下:
select
case when first*second*three>1000
then '大'
when first*second*three<1000
then '小' end
from (
select substr(professional,0,instr(professional,'*',1)-1)
as first
,substr(professional,instr(professional,'*',1,1)+1,instr(professional,'*',1,2)-instr(professional,'*',1,1)-1)
as second
,substr(professional,instr(professional,'*',1,2)+1,length(professional))
as three
from tb_student u
)
以上你可以根据你实际的要求,进行替换。谢谢。