MySQL字符串格式+条件语句

时间:2010-11-12 11:13:42

标签: mysql string attributes formatting conditional

我从属性表中选择下面的查询..问题是我需要一个基于条件的格式化字符串..

1。)以字符串“Reply:”开头格式化的字符串
2.)按照上面的字符串:
       Framed-Route + Framed-IP
       或Framed-IP未设置路由
       或池提示

以下是我需要的一个例子..

示例:回复:Framed-IP =“111.111.111.111”
示例2:回复:PoolHint =“8”

可以使用MySQL条件语句吗?

编辑补充

if(attribute_name =='Framed-Route')Reply = Framed-Route =“value”; elseif(attribute_name =='Framed-IP')回复= Framed-IP =“value” else Reply = PoolHint =“value”

###########输出
SELECT attribute_name, value
  FROM user_product_attribute upa, product_attribute pa
 WHERE upa.user_product_id IN

   (  SELECT upa.user_product_id
        FROM user_product_attribute upa, user_product up, product_attribute pa, product p
       WHERE pa.attribute_name = 'username'
         AND pa.product_attribute_id = upa.product_attribute_id
         AND pa.product_id = p.product_id

         AND up.status = 'active'
         AND p.product_name = 'product1'
         AND upa.value = 'joebogs' )

   AND upa.product_attribute_id = pa.product_attribute_id
###########输出

attribute_name值
诬陷路线111.111.111.111
Framed-IP-Address 111.111.111.111
PoolHint 8
用户名joeblogs
密码密码

1 个答案:

答案 0 :(得分:0)

如果我已正确理解了这个问题,您可以使用MySQL CONCAT()函数执行此操作:

不使用CONCAT:

mysql> SELECT attribute_name, value
    -> FROM user_product_attribute 
    -> WHERE attribute_name = 'Framed-IP-Address'\G

attribute_name: Framed-IP-Address
value: 111.111.111.111

使用CONCAT函数的类似查询:

mysql> SELECT attribute_name, 
    -> CONCAT('Reply: Framed-IP=',value) AS 'formatted_value'
    -> FROM user_product_attribute
    -> WHERE attribute_name = 'Framed-IP-Address'\G

attribute_name: Framed-IP-Address
formatted_value: Reply: Framed-IP=111.111.111.111

CONCAT doc:http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_concat

正如我所说,不确定这是不是你需要的东西?

李 - 进一步评论,这是一个更新的查询。这个使用CONCAT和IF:

mysql> SELECT attribute_name, 
    -> IF(attribute_name = 'Framed-Route', CONCAT('Reply=Framed-Route=',value),
    -> IF(attribute_name = 'Framed-IP', CONCAT('Reply=Framed-IP=',value), value))
    -> AS 'formatted_value'
    -> FROM user_product_attribute\G

*************************** 1. row ***************************
 attribute_name: Framed-Route
formatted_value: Reply=Framed-Route=111.111.111.111

*************************** 2. row ***************************
 attribute_name: Framed-IP
formatted_value: Reply=Framed-IP=111.111.111.111

在上面,如果attribute_name不是'Framed-Route'或'Framed-IP',则返回值而不进行任何格式化。