0

我在数据库中有 2 类型变量:文本和小数(20,2)(我正在编写一个 Web 应用程序,我将仅限于文本和数字这两种类型的数据,以方便操作员进行基础)。在数字数据类型中,有时我有所有列,其中只有整数部分,当我得到数据时,我有'32324244.00'。我想删除这个'.00'。

我编写了检查列中的条目是否 > '.00' 的代码

SELECT IF(COUNT(`code`)>0,1,0) 
FROM `table_1` 
WHERE  substring_index(`code`,'.',-1) >=1 
AND  substring_index(`code`,'.',-1) <= 99

什么时候有记录,代码返回“1”,如果没有,返回“0”;

我想开发此代码并将数字转换为在 MySQL 中立即执行。那么如何一个'1'来显示正常的个数,就像'0'来做'substring_index( code,'.', 1)'

我有代码:

SELECT IF(
 (SELECT IF(COUNT(`kod`)>0,1,0) FROM `table_1` 
  WHERE  substring_index(`kod`,'.',-1) >=1 
  AND substring_index(`kod`,'.',-1) <= 99)='1',`kod`,substring_index(`kod`,'.',1)
) WHERE `table_1`

此代码不起作用,PhpMyAdmin 返回错误:

#1064- 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以table_1 在第 1 行的“WHERE LIMIT 0, 30”附近使用正确的语法

问题出在哪里?

对不起我的英语不好 :-)

4

2 回答 2

2

问题是,您没有制定WHERE子句,也没有像这样从表中选择:

WHERE column = something 

试试这个:

select count(kod) 
from
( 
   SELECT IF(COUNT(`kod`) > 0, 1, 0) 
   FROM `table_1` 
   WHERE substring_index(`kod`, '.', -1) >= 1  
     AND substring_index(`kod`, '.', -1) <= 99) = '1', 
         `kod`, 
         substring_index(`kod`, '.', 1)
) t  .

如果你有 where 子句的东西,你可以在最后添加它;WHERE table_1 = .... 或类似的东西。


编辑:

SELECT IF((SELECT COUNT('kod') 
           FROM `table_1` 
           WHERE substring_index('kod', '.', -1) >= 1 
             AND substring_index('kod', '.', -1) <= 99 
             AND COUNT('kod')
         ) > '0', 
         'kod', 
         substring_index('kod', '.', 1)) as myvalue 
from `table_1`

编辑2:

试试这个:

SELECT IF((SELECT COUNT(kod) 
           FROM `table_1` 
           WHERE substring_index(kod,'.',-1) >=1 
             AND substring_index(`kod`,'.',-1) <= 99 
           having COUNT(kod) > '0'),
          `kod`,
          substring_index(`kod`,'.',1)
         ) as myvalue 
from `table_1`

看演示 SQLFIDDLE

旁注:确保您有名为kod.

于 2013-02-15T14:57:55.957 回答
0
'name' 'price' 'currency' 'code (kod)'    
'WYCIERACZKI płaskie QAP PASSAT B5 FL 2001-2005' '35.00' 'PLN' '36977143.00'
'WYCIERACZKA EKOLOGICZNA 45x75 cm GUMA WYCIERACZKI' '75.00' 'PLN' '27429666.00'
'BOSCH opel WYCIERACZKI Vectra C Omega Signum RAV4' '66.99' 'PLN' '79166309.00'
'NAJLEPSZE Wycieraczki AERO PREMIUM 530 mm 35-71 cm' '10.90' 'PLN' 41394344.00'
'PŁASKIE WYCIERACZKI VW SHARAN GALAXY + TYŁ 3 szt.' '49.00' 'PLN' '53684409.00'
'SERWISOWE WYCIERACZKI PEUGEOT 307 od 10.2004' '38.99' 'PLN' '12379457.00'
'PŁASKIE WYCIERACZKI VALEO _______ HONDA CIVIC' '63.00 'PLN' 54651109.00'

好的,第二列和第四列是十进制(20,2)。第四列只是我想显示的“整数”:

'WYCIERACZKI płaskie QAP PASSAT B5 FL 2001-2005' '35.00' 'PLN' '36977143'
'WYCIERACZKA EKOLOGICZNA 45x75 cm GUMA WYCIERACZKI' '75.00' 'PLN' '27429666'
'BOSCH opel WYCIERACZKI Vectra C Omega Signum RAV4' '66.99' 'PLN' '79166309'
'NAJLEPSZE Wycieraczki AERO PREMIUM 530 mm 35-71 cm' '10.90' 'PLN' 41394344'
'PŁASKIE WYCIERACZKI VW SHARAN GALAXY + TYŁ 3 szt.' '49.00' 'PLN' '53684409'
'SERWISOWE WYCIERACZKI PEUGEOT 307 od 10.2004' '38.99' 'PLN' '12379457'
'PŁASKIE WYCIERACZKI VALEO _______ HONDA CIVIC' '63.00 'PLN' 54651109'

因为价格有小数,我想显示这个正常

于 2013-02-15T16:17:05.687 回答