使用UUID4的一部分选择行

时间:2018-03-27 15:28:44

标签: postgresql

我有UUIDv4用户表作为主键。 如何选择ID为' e2eb5'?

的所有行

我尝试了以下选择:

<Style TargetType="Button" x:Key="ButtonEllipse">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <StackPanel Orientation="Vertical">
                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0 0 0 10"/>
                    <Image x:Name="ButtonImage" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="None"
                                   Source="{Binding Tag, RelativeSource={RelativeSource AncestorType=Button}}"/>
                </StackPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
...
<Button Content="Test" Style="{StaticResource ButtonEllipse}" Tag="image.png" />

在我的应用程序中,用户不到一千,而UUID的第一部分应该只是识别它们所需的所有信息。

因此我希望用户详细信息如下所示:

SELECT * FROM "user" WHERE "id" LIKE 'e2eb5%';

而不是:

/users/e2eb5

编辑:

按照此处的建议查询:How to query UUID for postgres

/users/3b0fbfd6-0661-4880-b5c5-4659ed85fa96

不是可行的解决方案,因为它需要固定长度的uuid前缀或编写更复杂的查询。

1 个答案:

答案 0 :(得分:2)

您可以将id转换为text并比较问题中的方式。

SELECT *
FROM "user"
WHERE "id"::text LIKE 'e2eb5%';

这需要将每行的id转换为文本,因此对于吨或行,它可能会很慢。但是,少于1,000的工作应该没问题。