Merge pull request #5464 from ytetsuro/fix/#5462/like-before-bug

Fixed issue #5462 Query Builder LIKE BEFORE doesnt work
diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php
index 8bc6328..5c0528a 100644
--- a/system/database/DB_query_builder.php
+++ b/system/database/DB_query_builder.php
@@ -970,7 +970,7 @@
 					$v = "'{$v}'";
 					break;
 				case 'before':
-					$v = "%'{$v}'";
+					$v = "'%{$v}'";
 					break;
 				case 'after':
 					$v = "'{$v}%'";
diff --git a/tests/codeigniter/database/query_builder/like_test.php b/tests/codeigniter/database/query_builder/like_test.php
index 3672afa..4d8673d 100644
--- a/tests/codeigniter/database/query_builder/like_test.php
+++ b/tests/codeigniter/database/query_builder/like_test.php
@@ -103,4 +103,27 @@
 		$this->assertCount(1, $tabs);
 	}
 
+	/**
+	 * GitHub issue #5462
+	 *
+	 * @see ./mocks/schema/skeleton.php
+	 *
+	 * @dataProvider like_set_side_provider
+	 */
+	public function test_like_set_side($str, $side, $expected_name)
+	{
+		$actual = $this->db->like('name', $str, $side)->get('job')->result_array();
+		$this->assertCount(1, $actual);
+		$this->assertEquals($expected_name, $actual[0]['name']);
+	}
+
+	public function like_set_side_provider()
+	{
+		return array(
+			array('Developer', 'none', 'Developer'),
+			array('tician', 'before', 'Politician'),
+			array('Accou', 'after', 'Accountant'),
+			array('usicia', 'both', 'Musician'),
+		);
+	}
 }