teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

9

テキスト修正

2018/10/13 11:42

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -30,7 +30,7 @@
30
30
  >
31
31
  > (以上、**逆引きSQL構文集:** [文字列の文字数を取得する](http://www.sql-reference.com/string/char_length.html) より引用)
32
32
 
33
- 参考になれば幸いです。
33
+ 以上、参考になれば幸いです。
34
34
 
35
35
 
36
36
  ---

8

テキスト修正

2018/10/13 11:42

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  こんにちは。
2
2
 
3
- 質問への追記・修正の依頼からもお尋ねしたとおり、お使いのデータベースが何かを知りたいところですが、`char_length` をサポートしているデータベース(例:MySQL 5.6 の [CHAR_LENGTH](https://dev.mysql.com/doc/refman/5.6/ja/string-functions.html#function_char-length) ) であれば、以下の修正でよいと思います。
3
+ 質問への追記・修正の依頼からもお尋ねしたとおり、お使いのデータベースが何かを知りたいところですが、`char_length` をサポートしているデータベースであれば、以下の修正でよいと思います。
4
4
 
5
5
  **修正前:**
6
6
  ```ruby
@@ -8,15 +8,16 @@
8
8
  ```
9
9
 
10
10
 
11
- **修正後:**
11
+ **修正後:** (※下記のように変数名は、@book**s** と、複数形にしたほうがよいでしょう。)
12
12
  ```ruby
13
13
  @books = Book.order('char_length(name) desc')
14
14
  ```
15
- ※上記のように変数名は、@book**s** と、複数形にしたほうがよいでしょう。
16
15
 
17
16
 
18
- 以下にも`char_length`使用するコド例が掲載されています。
17
+ 例えば、MySQL 5.6 は [char_length関数](https://dev.mysql.com/doc/refman/5.6/ja/string-functions.html#function_char-length)サポトしています。
19
18
 
19
+ 以下は`char_length` を使用するコード例です。
20
+
20
21
  - stackoverflow: [How to find the longest string in a column with Ruby on Rails? への回答](https://stackoverflow.com/a/18879029)
21
22
 
22
23
     
@@ -35,7 +36,7 @@
35
36
  ---
36
37
  **追記**
37
38
 
38
- または、以下のように Ruby の [sort](https://ref.xaio.jp/ruby/classes/array/sort) を使こともできます。
39
+ SQLの関数を使わずに、以下のように Ruby の [sort](https://ref.xaio.jp/ruby/classes/array/sort) を使って、name の長さの降順にソートすることもできます。
39
40
 
40
41
  ```ruby
41
42
  @books = Book.all.sort {|a,b| b.name.length <=> a.name.length }

7

テキスト修正

2018/10/13 11:35

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  こんにちは。
2
2
 
3
- 質問への追記・修正の依頼からもお尋ねしたとおり、お使いのデータベースが何かを知りたいところですが、`char_length` をサポートしているデータベースであれば、以下の修正でよいと思います。
3
+ 質問への追記・修正の依頼からもお尋ねしたとおり、お使いのデータベースが何かを知りたいところですが、`char_length` をサポートしているデータベース(例:MySQL 5.6 の [CHAR_LENGTH](https://dev.mysql.com/doc/refman/5.6/ja/string-functions.html#function_char-length) ) であれば、以下の修正でよいと思います。
4
4
 
5
5
  **修正前:**
6
6
  ```ruby

6

テキスト修正

2018/10/13 11:23

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  こんにちは。
2
2
 
3
- 質問への追記・修正の依頼書いように、データベースが何かを知りたいところですが、char_length をサポートしているデータベースであれば、以下の修正でよいと思います。
3
+ 質問への追記・修正の依頼からお尋ねしとおりお使いのデータベースが何かを知りたいところですが、`char_length` をサポートしているデータベースであれば、以下の修正でよいと思います。
4
4
 
5
5
  **修正前:**
6
6
  ```ruby
@@ -15,7 +15,7 @@
15
15
  ※上記のように変数名は、@book**s** と、複数形にしたほうがよいでしょう。
16
16
 
17
17
 
18
- 以下にもchar_length を使用するコードが掲載されています。
18
+ 以下にも`char_length` を使用するコードが掲載されています。
19
19
 
20
20
  - stackoverflow: [How to find the longest string in a column with Ruby on Rails? への回答](https://stackoverflow.com/a/18879029)
21
21
 
@@ -23,12 +23,12 @@
23
23
  - Railsガイド:[Active Record マイグレーション 3.9 reversibleを使用する](https://railsguides.jp/active_record_migrations.html#reversible%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B)
24
24
 
25
25
 
26
- なお、データベースによっては、char_length の替わりに別の関数を使う必要があります。文字列の文字数を取得するために、char_lengthではない関数を使うデータベースについては、以下をご参照ください。
26
+ なお、データベースによっては、`char_length` の替わりに別の関数を使う必要があります。文字列の文字数を取得するために、`char_length`ではない関数を使うデータベースについては、以下をご参照ください。
27
27
 
28
28
  > SQL中で文字列の文字数を取得する関数としてSQL92/99ではCHAR_LENGTH関数が定義されています.しかし,多くのDBMSは独自で同様の機能をもつ関数を用意しています.
29
+ >
30
+ > (以上、**逆引きSQL構文集:** [文字列の文字数を取得する](http://www.sql-reference.com/string/char_length.html) より引用)
29
31
 
30
- 以上、逆引きSQL構文集: [文字列の文字数を取得する](http://www.sql-reference.com/string/char_length.html) より引用
31
-
32
32
  参考になれば幸いです。
33
33
 
34
34
 

5

テキスト修正

2018/10/13 11:15

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  こんにちは。
2
2
 
3
- 質問への追記・修正の依頼にも書いたように、データベースが何かを知りたいところですが、以下の修正でうまくくかもしれせん
3
+ 質問への追記・修正の依頼にも書いたように、データベースが何かを知りたいところですが、char_length をサポートしているデータベースであれば、以下の修正でと思い
4
4
 
5
5
  **修正前:**
6
6
  ```ruby
@@ -15,7 +15,7 @@
15
15
  ※上記のように変数名は、@book**s** と、複数形にしたほうがよいでしょう。
16
16
 
17
17
 
18
- 以下にも char_length を使用するコードが掲載されています。
18
+ 以下にもchar_length を使用するコードが掲載されています。
19
19
 
20
20
  - stackoverflow: [How to find the longest string in a column with Ruby on Rails? への回答](https://stackoverflow.com/a/18879029)
21
21
 
@@ -23,8 +23,15 @@
23
23
  - Railsガイド:[Active Record マイグレーション 3.9 reversibleを使用する](https://railsguides.jp/active_record_migrations.html#reversible%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B)
24
24
 
25
25
 
26
+ なお、データベースによっては、char_length の替わりに別の関数を使う必要があります。文字列の文字数を取得するために、char_lengthではない関数を使うデータベースについては、以下をご参照ください。
27
+
28
+ > SQL中で文字列の文字数を取得する関数としてSQL92/99ではCHAR_LENGTH関数が定義されています.しかし,多くのDBMSは独自で同様の機能をもつ関数を用意しています.
29
+
30
+ 以上、逆引きSQL構文集: [文字列の文字数を取得する](http://www.sql-reference.com/string/char_length.html) より引用
31
+
26
32
  参考になれば幸いです。
27
33
 
34
+
28
35
  ---
29
36
  **追記**
30
37
 
@@ -32,13 +39,4 @@
32
39
 
33
40
  ```ruby
34
41
  @books = Book.all.sort {|a,b| b.name.length <=> a.name.length }
35
- ```
42
+ ```
36
-
37
- ---
38
- **追記2**
39
-
40
- 冒頭に、「以下の修正でうまくいくかもしれません。」と書いたように、初めの回答に書いたchar_lengthを使う方法は、データベースによっては、char_length の替わりに別の関数を使う必要があります。char_lengthではない関数を使うデータベースについては、以下をご参照ください。
41
-
42
- > SQL中で文字列の文字数を取得する関数としてSQL92/99ではCHAR_LENGTH関数が定義されています.しかし,多くのDBMSは独自で同様の機能をもつ関数を用意しています.
43
-
44
- 以上、逆引きSQL構文集: [文字列の文字数を取得する](http://www.sql-reference.com/string/char_length.html) より引用

4

テキスト修正

2018/10/13 10:56

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -32,4 +32,13 @@
32
32
 
33
33
  ```ruby
34
34
  @books = Book.all.sort {|a,b| b.name.length <=> a.name.length }
35
- ```
35
+ ```
36
+
37
+ ---
38
+ **追記2**
39
+
40
+ 冒頭に、「以下の修正でうまくいくかもしれません。」と書いたように、初めの回答に書いたchar_lengthを使う方法は、データベースによっては、char_length の替わりに別の関数を使う必要があります。char_lengthではない関数を使うデータベースについては、以下をご参照ください。
41
+
42
+ > SQL中で文字列の文字数を取得する関数としてSQL92/99ではCHAR_LENGTH関数が定義されています.しかし,多くのDBMSは独自で同様の機能をもつ関数を用意しています.
43
+
44
+ 以上、逆引きSQL構文集: [文字列の文字数を取得する](http://www.sql-reference.com/string/char_length.html) より引用

3

テキスト修正

2018/10/13 10:45

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -10,18 +10,16 @@
10
10
 
11
11
  **修正後:**
12
12
  ```ruby
13
- @book = Book.order('char_length(name) desc')
13
+ @books = Book.order('char_length(name) desc')
14
14
  ```
15
+ ※上記のように変数名は、@book**s** と、複数形にしたほうがよいでしょう。
15
16
 
17
+
16
18
  以下にも char_length を使用するコードが掲載されています。
17
19
 
18
20
  - stackoverflow: [How to find the longest string in a column with Ruby on Rails? への回答](https://stackoverflow.com/a/18879029)
19
21
 
20
22
     
21
-
22
-
23
-   
24
-
25
23
  - Railsガイド:[Active Record マイグレーション 3.9 reversibleを使用する](https://railsguides.jp/active_record_migrations.html#reversible%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B)
26
24
 
27
25
 
@@ -34,5 +32,4 @@
34
32
 
35
33
  ```ruby
36
34
  @books = Book.all.sort {|a,b| b.name.length <=> a.name.length }
37
- ```
35
+ ```
38
- ※上記のように変数名は、@book**s** と、複数形にしたほうがよいでしょう。

2

テキスト修正

2018/10/13 10:28

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -33,6 +33,6 @@
33
33
  または、以下のように Ruby の [sort](https://ref.xaio.jp/ruby/classes/array/sort) を使うこともできます。
34
34
 
35
35
  ```ruby
36
- @books = Book.all.sort {|a,b| b.name.length - a.name.length }
36
+ @books = Book.all.sort {|a,b| b.name.length <=> a.name.length }
37
37
  ```
38
38
  ※上記のように変数名は、@book**s** と、複数形にしたほうがよいでしょう。

1

テキスト修正

2018/10/13 10:18

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -25,4 +25,14 @@
25
25
  - Railsガイド:[Active Record マイグレーション 3.9 reversibleを使用する](https://railsguides.jp/active_record_migrations.html#reversible%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B)
26
26
 
27
27
 
28
- 参考になれば幸いです。
28
+ 参考になれば幸いです。
29
+
30
+ ---
31
+ **追記**
32
+
33
+ または、以下のように Ruby の [sort](https://ref.xaio.jp/ruby/classes/array/sort) を使うこともできます。
34
+
35
+ ```ruby
36
+ @books = Book.all.sort {|a,b| b.name.length - a.name.length }
37
+ ```
38
+ ※上記のように変数名は、@book**s** と、複数形にしたほうがよいでしょう。