# URLエンコード
$str =~ s/([^\w ])/'%'. unpack( 'H2', $1 )/eg;
$str =~ tr/ /+/;

# URLデコード
$str =~ tr/+/ /;
$str =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack( 'H2', $1 )/eg;

# URLエンコード
use URI::Escape;
$str = uri_escape( $str );

# URLデコード
use URI::Escape;
$str = uri_unescape( $str );
# 昔はこんな風にselectで代用してた
select(undef, undef, undef, 0.5);    # 500ms(0.5秒)のsleep

# Time::HiResが使えるなら、usleepを使いませう
# usleepは1秒以下のsleepが可能
# 引数はμ秒で指定、戻り値は実際にsleepしたμ秒
use Time::HiRes qw( usleep );
$micsec = usleep( 500000 );    # 500ms(0.5秒)のsleep
$micsec = usleep( 1000 );    # 1ms(0.001秒)のsleep
$micsec = usleep( 10 );    # 10μs(0.00001秒)のsleep

# CPAN - Time::HiRes - http://search.cpan.org/dist/Time-HiRes/
#

ロダ主用メモ。
最近めっきり忘れっぽくなってきたし。
固有名詞とか思い出せない時けっこうあるしorz
あくまで主用なので、思いっきり参考にはしない方が吉。
2008年より前の記事は、昔のblogの記事から移動したものです。

MySQLのchar型やvarchar型等は大文字と小文字の区別がされないのがデフォルト。
区別したい場合はテーブル作成時かクエリ投げる時に「BINARY」属性を付加する。

例えば、

CREATE TABLE `test_tbl` (`testcol` VARCHAR(10) BINARY NOT NULL);

とか、

ALTER TABLE `test_tbl` MODIFY `testcol` VARCHAR(10) BINARY;

のようにBINARY属性を付加すると区別できるようになる。

既に存在するテーブル等で、どうしてもALTER出来ない場合や、状況に応じて区別の有無を変化さたい場合等は、クエリを投げる時に属性を付加する事も可能。

例えば、

SELECT * FROM `test_tbl` WHERE `testcol` = BINARY 'WwXxYyZz';

こんな感じ。

まあ、クエリに付加する場合、元々予定されていない所に後付するとバグの原因にもなるので、出来るだけ避けた方が良いかと思う。

Environment

GreenBlog green-web-hosting

twitter

Posting tweet...

Powered by Twitter Tools

My Favorite

定期購読はFujisanが便利

FujisanのWebサイトへ