最近發現乙個現象是測試環境的 sqlite 是可以區分大小寫的。
就是說python
# sqlite 環境而到了線上的 mysql 就不區分大小寫了。>>> company.objects.filter(name='teambition')
]>
>>> company.objects.filter(name='teambition')
]>
python
# mysql 環境獲得到兩個例項。 但這樣不是我預想的。>>> company.objects.filter(name='teambition')
>, ]>]
起初我查詢了官方文件, 得到指引使用__exact
方法. 即:
python
company.objects.filter(name__exact='teambition')但是無效!!!
由於測試環境的 sqlite 沒有問題, 所以懷疑在 mysql 的配置上面。 原來是字符集校對規則的問題,utf8_general_ci
不區分大小寫, 可以改成utf8_bin
(將字串中的每乙個字元用二進位制資料儲存,區分大小寫。) 或者utf8_general_cs
(cs為case sensitive的縮寫,即大小寫敏感).
但是, 由於我程式段沒有運算元據庫的許可權, 所以沒有去 alter 已經有的 table。 我找到另外的一種解決方式
通過 django orm 的extra
, 在匹配語句上面加上binary來區分大小寫.
python
if settings.env == 'prod':
# 線上的 mysql 資料庫加上 binary
else:
# sqlite 不做處理
Postgresql查詢時不區大小寫
postgresql提供有強大的正規表示式系統,可以在資料庫級別實現模糊查詢。正規表示式匹配操作符 操作符描述例子 匹配正規表示式,大小寫相關 thomas thomas.匹配正規表示式,大小寫無關 thomas thomas.不匹配正規表示式,大小寫相關 thomas thomas.不匹配正規表示...
自定義Oracle replace函式不區分大小寫
在網上找的一函式,後來發現有點小問題,自己改了一下。function strreplace n str in varchar2,n search in varchar2,n replace in varchar2 return varchar2 is v result varchar2 4000 v...
hive 簡單查詢不走mapreduce
在hadoop生態圈中屬於資料倉儲的角色。他能夠管理hadoop中的資料,同時可以查詢hadoop中的資料。本質上講,hive是乙個sql解析引擎。hive可以把sql查詢轉換為mapreduce中的job來執行。hive有一套對映工具,可以把sql轉換為mapreduce中的job,可以把sql中...