SQL: LIKE 子句匹配值
SQL: LIKE Clause to match the values
我有一个移动验证字段,它会给出一条消息,说明如果我们键入相同的值,则该值存在 number/values 如果该值不存在,则该值存在于数据库中,否则可用
这是目前正在使用的查询:-
SELECT mobile FROM candidate_tabletest WHERE mobile LIKE '%' '$mobile' '%'
上述查询在某些情况下不起作用。例如,如果我们在数据库中有号码 123456789,当我们在手机字段中输入代码或任何其他格式(如 +91-123456789)时,它仍然表示手机号码可用。
这里是我的 HTML 移动字段代码:-
<input type="text" class="form-control" id="mobile" name="mobile" placeholder="mobile" value="+91" onkeyup="checkmobile();" >
PHP 检查代码:-
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
mysql_connect($host, $user, $pass);
mysql_select_db('appsrx1a_skyfler');
if(isset($_POST['user_mobile']))
{
$mobile=$_POST['user_mobile'];
$checkdata=" SELECT mobile FROM candidate_tabletest WHERE mobile LIKE '$mobile' '%' ";
$query=mysql_query($checkdata);
if(mysql_num_rows($query)>0)
{
echo '<span style="color:red;"><b>Mobile Already Exists</b></span>';
}
else
{
echo '<span style="color:green;"><b> Available</b></span>';
}
exit();
}
如果号码 (123456789) 存在于数据库中,即使用户将手机号码键入 +91-123456789 或任何其他格式。它应该给出一条警告消息,说明该号码已经存在。
您应该使用 concat .. 来构建正确的字符串模式
SELECT mobile FROM candidate_tabletest WHERE mobile LIKE concat( '%', '$mobile', '%' );
并按照 Gordon Linoff 的建议替换有问题的字符
SELECT mobile
FROM candidate_tabletest
WHERE mobile LIKE concat( '%', REPLACE(REPLACE('$mobile', '-', '') , '+', ''), '%' );
如果您只需要手机号码的右半部分,那么您可以使用
SELECT mobile
FROM candidate_tabletest
WHERE mobile LIKE concat( '%', SUBSTRING_INDEX('$mobile', '-', -1), '%' );
一种方法是删除违规字符:
SELECT mobile
FROM candidate_tabletest
WHERE mobile LIKE REPLACE(REPLACE('%'.'$mobile'.'%', '-', '') , '+', '')
您也可以在应用层执行此操作,因此 $mobile
仅包含数字(我认为这是 mobile
列的格式)。
我有一个移动验证字段,它会给出一条消息,说明如果我们键入相同的值,则该值存在 number/values 如果该值不存在,则该值存在于数据库中,否则可用
这是目前正在使用的查询:-
SELECT mobile FROM candidate_tabletest WHERE mobile LIKE '%' '$mobile' '%'
上述查询在某些情况下不起作用。例如,如果我们在数据库中有号码 123456789,当我们在手机字段中输入代码或任何其他格式(如 +91-123456789)时,它仍然表示手机号码可用。
这里是我的 HTML 移动字段代码:-
<input type="text" class="form-control" id="mobile" name="mobile" placeholder="mobile" value="+91" onkeyup="checkmobile();" >
PHP 检查代码:-
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
mysql_connect($host, $user, $pass);
mysql_select_db('appsrx1a_skyfler');
if(isset($_POST['user_mobile']))
{
$mobile=$_POST['user_mobile'];
$checkdata=" SELECT mobile FROM candidate_tabletest WHERE mobile LIKE '$mobile' '%' ";
$query=mysql_query($checkdata);
if(mysql_num_rows($query)>0)
{
echo '<span style="color:red;"><b>Mobile Already Exists</b></span>';
}
else
{
echo '<span style="color:green;"><b> Available</b></span>';
}
exit();
}
如果号码 (123456789) 存在于数据库中,即使用户将手机号码键入 +91-123456789 或任何其他格式。它应该给出一条警告消息,说明该号码已经存在。
您应该使用 concat .. 来构建正确的字符串模式
SELECT mobile FROM candidate_tabletest WHERE mobile LIKE concat( '%', '$mobile', '%' );
并按照 Gordon Linoff 的建议替换有问题的字符
SELECT mobile
FROM candidate_tabletest
WHERE mobile LIKE concat( '%', REPLACE(REPLACE('$mobile', '-', '') , '+', ''), '%' );
如果您只需要手机号码的右半部分,那么您可以使用
SELECT mobile
FROM candidate_tabletest
WHERE mobile LIKE concat( '%', SUBSTRING_INDEX('$mobile', '-', -1), '%' );
一种方法是删除违规字符:
SELECT mobile
FROM candidate_tabletest
WHERE mobile LIKE REPLACE(REPLACE('%'.'$mobile'.'%', '-', '') , '+', '')
您也可以在应用层执行此操作,因此 $mobile
仅包含数字(我认为这是 mobile
列的格式)。