搜索具有特定值的行

时间:2016-04-18 03:56:55

标签: mysql sql

这是表格

    *City       Crime*
    Bangkok    High
    Hongkong   Very High
    Seoul      Low, Average
    Texas      Average, High
    Jakarta    Low
    Singapore  Very Low
    Las Vegas  Average, Low

sql如何搜索犯罪“低”的地方 我使用preg_split,但我不知道匹配数据库

4 个答案:

答案 0 :(得分:1)

使用LIKE匹配器选择字符串的部分匹配:

SELECT *
FROM cities
WHERE crime LIKE '%Low%'

如果您需要不区分大小写,请使用LOWER(crime)将列转换为小写。

答案 1 :(得分:1)

试试吧。

MySQL的:

select * from City
where (Crime like 'low%' or Crime like '%, low%' or Crime like '%low,%')

SQL:

class CustomUser(AbstractBaseUser):
    email = models.EmailField('email address', unique=True, db_index=True)
    username = models.CharField('username', max_length=50, unique=True, db_index=True)
    first_name = models.CharField(max_length=50, blank=False)
    last_name = models.CharField(max_length=50, blank=False)
    joined = models.DateTimeField(auto_now_add=True)
    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)
    date_joined = models.DateTimeField(_('date joined'), default=timezone.now)

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = []

    objects = CustomUserManager()

    def __unicode__(self):
        return self.username

答案 2 :(得分:0)

select * 
from table 
where 
    `crime` like '%Low%' 
    and `crime` not like '%Very Low%';

答案 3 :(得分:0)

您选择记录 符合WHERE的某些条件。

select * from mytable where crime = 'Low';

您的表格中还有其他条目,其中犯罪字符串包含“低”子字符串。例如。 '低,平均'和'平均,低'。当然,我不知道这些的确切含义。这两个意思是一样的吗?他们是否意味着犯罪“低到平均”?还是不确定“低价还是低价”?你会把它算作“低”还是高于“低”的另一个级别?

然后是“非常低”的条目。你会认为这个“低”还是超出水平?

根据答案,您可以在查询上方扩展以匹配所有“低”子字符串:

select * from mytable where crime like '%Low%';

或使用更高级的字符串搜索,例如

select * from mytable
where ',' || replace(replace(crime, ', ', ','), ' ,', ',') || ',' like '%,Low,%';

会得到“低,平均”和“平均,低”,但不会“非常低”。