本文介紹case when
創(chuàng)新互聯(lián)公司從2013年成立,先為昂仁等服務(wù)建站,昂仁等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為昂仁企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
case 包含兩種表達(dá)格式:
第一種:簡(jiǎn)單case函數(shù)
參數(shù):
input_expression 是使用簡(jiǎn)單 CASE 格式時(shí)所計(jì)算的表達(dá)式,是任何有效的SQL表達(dá)式。
when when_expression 使用簡(jiǎn)單 CASE 格式時(shí) input_expression 所比較的簡(jiǎn)單表達(dá)式。when_expression 是任意有效的SQL表達(dá)式。input_expression 和每個(gè) when_expression 的數(shù)據(jù)類型必須相同,或者是隱性轉(zhuǎn)換。
[ ...n ]占位符 可以使用多個(gè) when when_expression then result_expression 子句或 WHEN boolean_expression THEN result_expression 子句
then result_expression 當(dāng) input_expression = when_expression 取值為 true,或者 boolean_expression 取值為 true 時(shí)返回的表達(dá)式。
result expression 是任意有效的sql表達(dá)式。
esle else_result_expression
當(dāng)比較運(yùn)算取值不為 TRUE 時(shí)返回的表達(dá)式。如果省略此參數(shù)并且比較運(yùn)算取值不為 TRUE,CASE 將返回 NULL 值。else_result_expression 是任意有效的sql表達(dá)式。Else_result_expression 和所有 result_expression 的數(shù)據(jù)類型必須相同,或者必須是隱性轉(zhuǎn)換。
舉例說(shuō)明:
第二種:case搜索函數(shù)
參數(shù)介紹:
WHEN Boolean_expression 使用 CASE 搜索格式時(shí)所計(jì)算的布爾表達(dá)式。
Boolean_expression 是任意有效的布爾表達(dá)式。結(jié)果類型從 result_expressions 和可選 else_result_expression 的類型集合中返回最高的優(yōu)先規(guī)則類型。有關(guān)更多信息,請(qǐng)參見(jiàn)數(shù)據(jù)類型的優(yōu)先順序。
CASE 搜索函數(shù) :返回結(jié)果值介紹:
按指定順序?yàn)槊總€(gè) WHEN 子句的 Boolean_expression 求值。返回第一個(gè)取值為 TRUE 的 Boolean_expression 的 result_expression。
如果沒(méi)有取值為 TRUE 的 Boolean_expression,則當(dāng)指定 ELSE 子句時(shí) SQL Server 將返回 else_result_expression;若沒(méi)有指定 ELSE 子句,則返回 NULL 值。
舉例說(shuō)明:
case when 具體用法就說(shuō)到這里,謝謝各位。
可以不管數(shù)據(jù)類型全通過(guò)getString()獲取
獲取后再轉(zhuǎn)需要的類型
update 表名稱 set ? 屬性1=?,屬性2=? where id=?,這里的id值得是你表的主鍵,他的值是想要修改的那條記錄的主鍵值。
具體修改方法:
0:表示數(shù)字占位符。如果值在格式字符串被設(shè)置為在"0" 出現(xiàn)的位置上有數(shù)字的格式,則該數(shù)字會(huì)被復(fù)制到輸出字符串。否則"0" 會(huì)被保存在輸出字符串的位置。例如:在整數(shù)欄位放置 0000,從表輸出的整數(shù)將會(huì)有 0012 的格式。
#:表示數(shù)字占位符。如果值在格式字符串被設(shè)置為在"#"出現(xiàn)的位置上有數(shù)字的格式,則該數(shù)字會(huì)被復(fù)制到輸出字符串。否則沒(méi)有任何東西保存在輸出字符串的位置。例如在整數(shù)欄位放置 ####,從表輸出的整數(shù)將會(huì)有 12 34 的格式。 . :表示小數(shù)點(diǎn)。格式字符串的第一個(gè)"." 字符決定小數(shù)點(diǎn)分隔符的位置,任何額外的"." 字符會(huì)被忽略,在輸出中實(shí)際作為一個(gè)小數(shù)點(diǎn)分隔符的字符是由 DecimalSeparator 全局變量決定。 DecimalSeparator 的默認(rèn)值指定在 Windows 控制面板中地區(qū)及語(yǔ)言選項(xiàng)部分的數(shù)字格式。
, :表示千位數(shù)分隔符。如果格式字符串包含一個(gè)或多個(gè)"," 字符,輸出的數(shù)中小數(shù)點(diǎn)左邊將會(huì)插入千位數(shù)分隔符,每 3 個(gè)數(shù)字為一組。在輸出中帶有千位數(shù)分隔符的字符是由ThousandSeparator 全局變量決定。ThousandSeparator 的默認(rèn)值指定 Windows 控制面板地區(qū)及語(yǔ)言選項(xiàng)部分的數(shù)字格式。
E+:科學(xué)記數(shù)法。如果任何一個(gè)"E+"、"E-" 、"e+"或"e-" 字符串包含在格式字符串中,數(shù)字設(shè)置為使用科學(xué)記數(shù)法格式。一組最多四個(gè)"0" 字符立即跟隨"E+"、"E-" 、"e+"或"e-" ,決定在指數(shù)中數(shù)字的最少數(shù)。"E+"及"e+"格式輸出加號(hào)到正的指數(shù)及輸出減號(hào)到負(fù)的指數(shù)。"E-" 及"e-" 格式只會(huì)輸出記號(hào)字符到負(fù)的指數(shù)。 'xx'/"xx":字符以單引號(hào)或雙引號(hào)括住的會(huì)照原樣顯示,并不會(huì)影響格式。 ; :在格式字符串分隔正數(shù)、負(fù)數(shù)及零數(shù)部分。
二、Navicat for MySQL 如何設(shè)置日期時(shí)間格式
在小數(shù)點(diǎn)之前最左邊 "0" 的位置,及在小數(shù)點(diǎn)之后最右邊 "0" 的位置,格式字符串決定數(shù)字必須出示在輸出字符串的范圍。
數(shù)被設(shè)置為四舍五入至小數(shù)點(diǎn)右邊最多數(shù)字占位符("0" 或 "#")小數(shù)位的格式。如果格式?jīng)]有包含小數(shù)點(diǎn),值會(huì)被設(shè)置為四舍五入至最接近整數(shù)的格式。 如果數(shù)字在格式字符串被設(shè)置為小數(shù)位分隔符左邊的數(shù)字,比 "." 字符左邊數(shù)字占位符多的格式,額外數(shù)字會(huì)輸出在第一個(gè)數(shù)字占位符之前。
linux環(huán)境下python怎樣操作mysql數(shù)據(jù)庫(kù)呢?方法如下:
首先在Linux環(huán)境下安裝mysql-python
1、下載mysql-python
打開(kāi)終端:
cd /usr/local
sudo wget?
官網(wǎng)地址:
2、解壓
sudo tar -zxvf MySQL-python-1.2.2.tar.gz
cd MySQL-python-1.2.2
3、在安裝前需進(jìn)行配置
a、修改setup_posix.py中的mysql_config.path為你mysql安裝目錄的mysql_config路徑
b、修改site.cfg中的threadsafe = False,去掉mysql_config前的注釋,并改為mysql_config = /usr/local/mysql/bin/mysql_config
c、執(zhí)行命令:
export LD_LIBRARY_PATH=/usr/local/mysql/lib/mysql
sudo ln -s /usr/local/mysql/lib/mysql/libmysqlclient.so /usr/lib/libmysqlclient.so.14
sudo ldconfig (這個(gè)很重要,否則后面會(huì)報(bào)錯(cuò)ImportError: libmysqlclient.so.14: cannot open shared object file)
4、編譯安裝
1)python setup.py build
若未成功的話,需手動(dòng)安裝setuptools:
sudo apt-get install python-setuptools
2)sudo python setup.py install
5、測(cè)試
python
import MySQLdb
沒(méi)有錯(cuò)誤,則表示安裝成功了。
使用python操作MySQL
使用python連接MySQL,創(chuàng)建數(shù)據(jù)庫(kù),創(chuàng)建表格,插入/查詢數(shù)據(jù)。python_mysql.py代碼如下:
效果如圖:
若出現(xiàn)類似于此的警告:
/usr/local/lib/python2.6/dist-packages/MySQL_python-1.2.2-py2.6-linux-i686.egg/MySQLdb/__init__.py:34: DeprecationWarning: the sets module is deprecated from sets import ImmutableSet
解決辦法如下:
找到上面路徑MySQLdb下的__init__.py文件
1) 在文件中 "__init__.py"中, 注釋掉:
from sets import ImmutableSet
class DBAPISet(ImmutableSet):
新增:
class DBAPISet(frozenset):
2) 在文件"converters.py"中,注釋掉 from sets import BaseSet, Set 這一句話。
3) 在文件"converters.py"中, 修改 其中的"Set" 成為 "set" ( 只有兩個(gè)地方需要修改,即大寫(xiě)改小寫(xiě))
大概 line 45: return Set([ i for i in s.split(',') if i ]) 改為 return set([ i for i in s.split(',') if i ])
大概 line 129: Set: Set2Str, 改為 set: Set2Str,
1.引入MySQLdb庫(kù)
import MySQLdb
2.和數(shù)據(jù)庫(kù)建立連接
conn=MySQLdb.connect(host="localhost",user="root",passwd="sa",db="mytable",charset="utf8")
提供的connect方法用來(lái)和數(shù)據(jù)庫(kù)建立連接,接收數(shù)個(gè)參數(shù),返回連接對(duì)象.
比較常用的參數(shù)包括
host:數(shù)據(jù)庫(kù)主機(jī)名.默認(rèn)是用本地主機(jī).
user:數(shù)據(jù)庫(kù)登陸名.默認(rèn)是當(dāng)前用戶.
passwd:數(shù)據(jù)庫(kù)登陸的秘密.默認(rèn)為空.
db:要使用的數(shù)據(jù)庫(kù)名.沒(méi)有默認(rèn)值.
port:MySQL服務(wù)使用的TCP端口.默認(rèn)是3306.
charset:數(shù)據(jù)庫(kù)編碼.
然后,這個(gè)連接對(duì)象也提供了對(duì)事務(wù)操作的支持,標(biāo)準(zhǔn)的方法
commit() 提交
rollback() 回滾
3.執(zhí)行sql語(yǔ)句和接收返回值
cursor=conn.cursor()
n=cursor.execute(sql,param)
首先,我們用使用連接對(duì)象獲得一個(gè)cursor對(duì)象,接下來(lái),我們會(huì)使用cursor提供的方法來(lái)進(jìn)行工作.這些方法包括兩大類:1.執(zhí)行命令,2.接收返回值
cursor用來(lái)執(zhí)行命令的方法:
callproc(self, procname, args):用來(lái)執(zhí)行存儲(chǔ)過(guò)程,接收的參數(shù)為存儲(chǔ)過(guò)程名和參數(shù)列表,返回值為受影響的行數(shù)
execute(self, query, args):執(zhí)行單條sql語(yǔ)句,接收的參數(shù)為sql語(yǔ)句本身和使用的參數(shù)列表,返回值為受影響的行數(shù)
executemany(self, query, args):執(zhí)行單條sql語(yǔ)句,但是重復(fù)執(zhí)行參數(shù)列表里的參數(shù),返回值為受影響的行數(shù)
nextset(self):移動(dòng)到下一個(gè)結(jié)果集
cursor用來(lái)接收返回值的方法:
fetchall(self):接收全部的返回結(jié)果行.
fetchmany(self, size=None):接收size條返回結(jié)果行.如果size的值大于返回的結(jié)果行的數(shù)量,則會(huì)返回cursor.arraysize條數(shù)據(jù).
fetchone(self):返回一條結(jié)果行.
scroll(self, value, mode='relative'):移動(dòng)指針到某一行.如果mode='relative',則表示從當(dāng)前所在行移動(dòng)value條,如果mode='absolute',則表示從結(jié)果集的第一行移動(dòng)value條.
下面的代碼是一個(gè)完整的例子.
#使用sql語(yǔ)句,這里要接收的參數(shù)都用%s占位符.要注意的是,無(wú)論你要插入的數(shù)據(jù)是什么類型,占位符永遠(yuǎn)都要用%s
sql="insert into cdinfo values(%s,%s,%s,%s,%s)"
#param應(yīng)該為tuple或者list
param=(title,singer,imgurl,url,alpha)
#執(zhí)行,如果成功,n的值為1
n=cursor.execute(sql,param)
#再來(lái)執(zhí)行一個(gè)查詢的操作
cursor.execute("select * from cdinfo")
#我們使用了fetchall這個(gè)方法.這樣,cds里保存的將會(huì)是查詢返回的全部結(jié)果.每條結(jié)果都是一個(gè)tuple類型的數(shù)據(jù),這些tuple組成了一個(gè)tuple
cds=cursor.fetchall()
#因?yàn)槭莟uple,所以可以這樣使用結(jié)果集
print cds[0][3]
#或者直接顯示出來(lái),看看結(jié)果集的真實(shí)樣子
print cds
#如果需要批量的插入數(shù)據(jù),就這樣做
sql="insert into cdinfo values(0,%s,%s,%s,%s,%s)"
#每個(gè)值的集合為一個(gè)tuple,整個(gè)參數(shù)集組成一個(gè)tuple,或者list
param=((title,singer,imgurl,url,alpha),(title2,singer2,imgurl2,url2,alpha2))
#使用executemany方法來(lái)批量的插入數(shù)據(jù).這真是一個(gè)很酷的方法!
n=cursor.executemany(sql,param)
4.關(guān)閉數(shù)據(jù)庫(kù)連接
需要分別的關(guān)閉指針對(duì)象和連接對(duì)象.他們有名字相同的方法
cursor.close()
conn.close()
以上方法就可以了。
另外,附MySQLdb的相關(guān)資料
更多關(guān)于MySQLdb的信息可以查這里: