<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ゆーすけぶろぐ &#187; sql</title>
	<atom:link href="http://yusukezzz.net/blog/archives/tag/sql/feed" rel="self" type="application/rss+xml" />
	<link>http://yusukezzz.net/blog</link>
	<description>yusukezzz&#039;s weblog... ぷろぐらむとか ruby, android, java, thinkpad, milestone2</description>
	<lastBuildDate>Wed, 28 Dec 2011 13:21:54 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>SQLでNULLの検索や除外</title>
		<link>http://yusukezzz.net/blog/archives/1481</link>
		<comments>http://yusukezzz.net/blog/archives/1481#comments</comments>
		<pubDate>Thu, 30 Jul 2009 07:25:47 +0000</pubDate>
		<dc:creator>yusukezzz</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://yusukezzz.net/blog/archives/1481</guid>
		<description><![CDATA[SQLではWHERE句で検索条件を指定しますが、その際にNULLを扱う場合について調べました というのも、普通に だと取り出せません とすることで取り出せます（否定はIS NOT NUL）]]></description>
			<content:encoded><![CDATA[<p>SQLではWHERE句で検索条件を指定しますが、その際にNULLを扱う場合について調べました<br />
というのも、普通に</p>
<pre class="brush: sql; title: ; notranslate">
SELECT * FROM users WHERE clm = NULL
</pre>
<p>だと取り出せません</p>
<pre class="brush: sql; title: ; notranslate">
SELECT * FROM users WHERE clm IS NULL
</pre>
<p>とすることで取り出せます（否定はIS NOT NUL）</p>
]]></content:encoded>
			<wfw:commentRss>http://yusukezzz.net/blog/archives/1481/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQLでLIKE文をまとめる</title>
		<link>http://yusukezzz.net/blog/archives/625</link>
		<comments>http://yusukezzz.net/blog/archives/625#comments</comments>
		<pubDate>Wed, 24 Dec 2008 09:19:54 +0000</pubDate>
		<dc:creator>yusukezzz</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://yusukezzz.dyndns.org/blog/?p=625</guid>
		<description><![CDATA[今までwordは１つで複数のフィールドを検索するときは ...WHERE (`field1` LIKE '%word%') OR (`field2` LIKE '%word%') OR... という感じにしており、冗長な [...]]]></description>
			<content:encoded><![CDATA[<p>今までwordは１つで複数のフィールドを検索するときは<br />
<code type="sql"><br />
...WHERE (`field1` LIKE '%word%') OR (`field2` LIKE '%word%') OR...<br />
</code><br />
という感じにしており、冗長な気がしてなりませんでした；</p>
<p><code type="sql"><br />
...WHERE (`field1` || `field2`) LIKE '%word%' ...<br />
</code><br />
一度このようにしてやってみたのですが上手くいきませんでした<br />
どちらのfieldも内容があれば上手くいくので最初は勘違いしていましたが、この場合、どちらかのfieldがnullならその行の検索が失敗してしまいます（例え片方のfieldがマッチしていても）</p>
<p><code type="sql"><br />
...WHERE (IFNULL(`field1`, '') || IFNULL(`field2`, '')) LIKE '%word%' ...<br />
</code><br />
こうするとfieldがnullの場合に&#8221;（空文字列）が返るのでそのまま検索出来ます<br />
まだ多少冗長な気がしないでもないですが、前よりはマシになったと思います</p>
]]></content:encoded>
			<wfw:commentRss>http://yusukezzz.net/blog/archives/625/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>重複しないようにカラムを抜き出すSQL</title>
		<link>http://yusukezzz.net/blog/archives/596</link>
		<comments>http://yusukezzz.net/blog/archives/596#comments</comments>
		<pubDate>Sat, 13 Dec 2008 18:21:35 +0000</pubDate>
		<dc:creator>yusukezzz</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://yusukezzz.dyndns.org/blog/?p=596</guid>
		<description><![CDATA[DISTINCTというコマンドを使います 例えばtwitterのようなサービスで全体の発言から直近10人のユーザIDを抜き出す場合、 といった具合です]]></description>
			<content:encoded><![CDATA[<p>DISTINCTというコマンドを使います<br />
例えばtwitterのようなサービスで全体の発言から直近10人のユーザIDを抜き出す場合、</p>
<pre class="brush: sql; title: ; notranslate">
SELECT DISTINCT `user_id` FROM `statuses` ORDER BY `created_at` DESC LIMIT 10
</pre>
<p>といった具合です</p>
]]></content:encoded>
			<wfw:commentRss>http://yusukezzz.net/blog/archives/596/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL文で嵌まった</title>
		<link>http://yusukezzz.net/blog/archives/430</link>
		<comments>http://yusukezzz.net/blog/archives/430#comments</comments>
		<pubDate>Thu, 02 Oct 2008 15:29:48 +0000</pubDate>
		<dc:creator>yusukezzz</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://yusukezzz.dyndns.org/blog/entry/430</guid>
		<description><![CDATA[Railsの問題ではないのでカテゴリおかしいけど… find_by_sqlというメソッドでSQL文叩いたときの失敗 find_by_*とかだと:conditionsに配列を渡すと自動的にSQLのwhere文になるよう処理 [...]]]></description>
			<content:encoded><![CDATA[<p>Railsの問題ではないのでカテゴリおかしいけど…<br />
find_by_sqlというメソッドでSQL文叩いたときの失敗<br />
find_by_*とかだと:conditionsに配列を渡すと自動的にSQLのwhere文になるよう処理してくれるんだけど、<br />
find_by_sqlは直でSQL書かなきゃいけないので単に配列渡してもエラーになる<br />
そこで@users.map{|u|u.id}.join(&#8216; OR &#8216;)とかやってwhereの部分作ったんだけど…<br />
["SELECT * FROM posts WHERE user_id = ?", @users.map{|u|u.id}.join(' OR ')]<br />
XSS対策でこのようにやってて、@usersが2人以上だとエラーになるという現象に遭遇</p>
<p>なぜエラーになるかというと、この書き方だと「?」が「@users〜」と置き換わるんだけど、この時強制的に（？）文字列にされてしまう<br />
つまり、1 OR 2 OR 3とかの条件文も&#8217;1 OR 2 OR 3&#8242;という文字列になってしまい、そんなuser_idはないので検索結果が0件なのでした<br />
1人の場合は正常なので中々分からなかった；<br />
（文字列型でも数字だけだと自動で型キャストされて検索出来てしまう模様；）</p>
<p>長々と書いたけど現状はこんな感じ<br />
<a href="http://yusukezzz.dyndns.org/blog/files//timeline.png" rel="shadowbox[sbpost-430];player=img;" target="_blank"><img src="http://yusukezzz.dyndns.org/blog/files/timeline.png" width="93" height="120" alt="タイムライン"></a><br />
背景が薄い灰色の行がブックマーク、他がつぶやき<br />
ブックマーク部分はまだURLを登録出来るだけなのでタグとかに対応させたい</p>
]]></content:encoded>
			<wfw:commentRss>http://yusukezzz.net/blog/archives/430/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

