+ -
当前位置:首页 → 问答吧 → 这个语句应该如何写!

这个语句应该如何写!

时间:2011-07-22

来源:互联网

SQL code

SET @i = 2;

IF(@i=1) THEN
SELECT bs_product.productCode,bs_product.productName,bs_product.assetsName,bs_product.cycle,
    bs_product.spec,bs_product.unitName,bs_product.address,bs_product.ovalue,bs_product.dotknow,
    bs_product.status,bs_product.personName,bs_product.supperName,bs_product.buildCompanyName,
    bs_product.useYear,bs_product.Subject,bs_product.subject1,bs_product.inWay,bs_product.assetsCode,
    bs_product.quantity,bs_product.price,bs_product.remark FROM bs_product
WHERE unitName LIKE '%%'
    AND  STATUS LIKE '%%' AND productCode LIKE '%%' AND productName LIKE '%%'
    AND LTRIM((YEAR(NOW())-YEAR(dotknow))*12+(MONTH(NOW())-MONTH(dotknow))) LIKE '%%'
    AND assetsName LIKE '%%'
    AND ovalue <10000;
END IF;
IF(@i=2) THEN
SELECT bs_product.productCode,bs_product.productName,bs_product.assetsName,bs_product.cycle,
    bs_product.spec,bs_product.unitName,bs_product.address,bs_product.ovalue,bs_product.dotknow,
    bs_product.status,bs_product.personName,bs_product.supperName,bs_product.buildCompanyName,
    bs_product.useYear,bs_product.Subject,bs_product.subject1,bs_product.inWay,bs_product.assetsCode,
    bs_product.quantity,bs_product.price,bs_product.remark FROM bs_product
WHERE unitName LIKE '%%'
    AND  STATUS LIKE '%%' AND productCode LIKE '%%' AND productName LIKE '%%'
    AND LTRIM((YEAR(NOW())-YEAR(dotknow))*12+(MONTH(NOW())-MONTH(dotknow))) LIKE '%%'
    AND assetsName LIKE '%%'
    AND ovalue >=10000 OR ovalue <100000;
END IF;
IF(@i=3) THEN
SELECT bs_product.productCode,bs_product.productName,bs_product.assetsName,bs_product.cycle,
    bs_product.spec,bs_product.unitName,bs_product.address,bs_product.ovalue,bs_product.dotknow,
    bs_product.status,bs_product.personName,bs_product.supperName,bs_product.buildCompanyName,
    bs_product.useYear,bs_product.Subject,bs_product.subject1,bs_product.inWay,bs_product.assetsCode,
    bs_product.quantity,bs_product.price,bs_product.remark FROM bs_product
WHERE unitName LIKE '%%'
    AND  STATUS LIKE '%%' AND productCode LIKE '%%' AND productName LIKE '%%'
    AND LTRIM((YEAR(NOW())-YEAR(dotknow))*12+(MONTH(NOW())-MONTH(dotknow))) LIKE '%%'
    AND assetsName LIKE '%%'
    AND ovalue >=100000;
END IF;

作者: AcHerat   发布时间: 2011-07-22

起到类似的作用,SQL可以直接这么写,能够获取结果集,MYSQL该如何些。

作者: AcHerat   发布时间: 2011-07-22

SQL code

--动态可以执行,但只有三个条件,有没可能直接用判断获取三个结果集,因为后边的ovalue条件是变动的。

SET @i = 2;
SET @str = CASE WHEN @i = 1 THEN ' ovalue <10000 ' 
        WHEN @i = 2 THEN ' ovalue >=10000 or ovalue <100000 ' 
        WHEN @i = 3 THEN ' ovalue >=100000 ' END;

SET @SQL = CONCAT('SELECT bs_product.productCode,bs_product.productName,bs_product.assetsName,bs_product.cycle,
    bs_product.spec,bs_product.unitName,bs_product.address,bs_product.ovalue,bs_product.dotknow,
    bs_product.status,bs_product.personName,bs_product.supperName,bs_product.buildCompanyName,
    bs_product.useYear,bs_product.Subject,bs_product.subject1,bs_product.inWay,bs_product.assetsCode,
    bs_product.quantity,bs_product.price,bs_product.remark FROM bs_product
where unitName like ''','%%','''
    and  status like ''','%%',''' and productCode like ''','%%',''' and productName like ''','%%',''' 
    and ltrim((year(now())-year(dotknow))*12+(month(now())-month(dotknow))) like ''','%%','''
    and assetsName like ''','%%','''
    and ',@str);
    
PREPARE stmt1 FROM @SQL;
EXECUTE stmt1;

作者: AcHerat   发布时间: 2011-07-22

热门下载

更多