如何选择随机子串,用逗号分隔(“,”)从字符串

时间:2013-12-30 10:31:02

标签: mysql

我有一个列有一个由逗号分隔的id列表,我想从中选择一个随机ID,

    slId  |  adsId
    __________________________
     1    |   1,3,5,6,8,10
     2    |   2,3,4,6,8,9,11

我想从上表中选择一个随机adsId。

预期结果:

    slId  |  adsId
    _________________
     1    |   5
     2    |   11

提前致谢。

3 个答案:

答案 0 :(得分:2)

你可以在php中完成。

    //retrieve all your adsId for slId 1
$array = explode(',', $resultOfQuery);
$nb = rand(0, sizeof($array));
$value = $array[$nb];

也许在sql中有一个简单的方法,但我不知道对不起。

答案 1 :(得分:2)

请注意,最好不要在字段中存储以逗号分隔的值。但是,如果您无法更改数据库结构,则可以使用此MySQL查询:

SELECT
  slID,
  SUBSTRING_INDEX(
    SUBSTRING_INDEX(adsId, ',', rand()*(LENGTH(adsId)-LENGTH(REPLACE(adsID, ',', '')))+1),
    ',',
    -1) as random_ads
FROM
  yourtable

请参阅小提琴here

答案 2 :(得分:0)

试试这个:

It will be more simple if you use php code here,

$adsId_array = explode(',', $adsId);
$random_number = rand(0, sizeof($adsId_array));
$value = $array[$random_number];

>> Here $value will return random value every time.

谢谢!